zoukankan      html  css  js  c++  java
  • 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);
        }
    }

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

  • 相关阅读:
    Linux下 printf 输出字符串的颜色
    ARM指令集详解(超详细!带实例!)
    试试代码框
    java web各种listener
    mysql 技术支持
    Tomcat 技术支持
    关于PreparedStatement.addBatch()方法
    JQuery banner 轮播
    Extjs 提示窗口
    如何删除JSP编译后的空行
  • 原文地址:https://www.cnblogs.com/hess/p/6626147.html
Copyright © 2011-2022 走看看