JavaScript二叉树的递归遍历方法

二叉树是由根节点,左子树,右子树组成,左子树和友子树分别是一个二叉树。

下面是一个二叉树的例子:

{
    "ruleId":"",
    "name":"客户年龄大于20",
    "id":"root",
    "expression":"age>20",
    "yes":{
        "name":"客户年龄大于25",
        "id":"root-true",
        "expression":"age>25",
        "yes":{
            "name":"可贷金额为五万",
            "id":"root-true-true",
            "expression":"money = 50000"    
        },
        "no":{
            "name":"可贷金额为三万",
            "id":"root-true-false",
            "expression":"money = 30000"        
        }    
    },
    "no":{
        "name":"客户年龄小于18",
        "id":"root-false",
        "expression":"age<18",
        "yes":{
            "name":"不可贷款",
            "id":"root-false-true",
            "expression":"money = 0"    
        },
        "no":{
            "name":"可贷金额为一万",
            "id":"root-false-false",
            "expression":"money = 10000"        
        }
    }
}

1)先序遍历

function preorder(data){
    if(data){
        console.log(data.name);
        preorder(data.yes);
        preorder(data.no)
    }
}  

2)中序遍历

function preorder(data){
    if(data){
        preorder(data.yes);
        console.log(data.name);
        preorder(data.no)
    }
}

3)后序遍历

function preorder(data){
    if(data){
        preorder(data.yes);
        preorder(data.no);
        console.log(data);
    }
}

这三种都属于深度优先遍历,因为优先往深处访问。

原文地址:https://www.cnblogs.com/hess/p/6626147.html