美文网首页
二叉树的遍历规则二

二叉树的遍历规则二

作者: 小豆soybean | 来源:发表于2018-08-14 17:52 被阅读0次

    原文链接:https://www.jianshu.com/p/768892e095bf
    我的理解:参考建树的方式和创建原型方法的方式。

    二叉树的常用遍历为前序遍历,中序遍历,后序遍历,三种遍历方法仅仅是交换了代码的运行顺序而已,代码如下:

    
    function Node(data,left,right){
        this.data=data;
        this.left=left;
        this.right=right;
    }
    
    function Tree(){
        this.root=null;
    }
    
    Tree.prototype={
        //创建二叉树
        create: function(){
            var b=new Node(2,new Node(4),new Node(5));
            var c=new Node(3,new Node(6),new Node(7));
            this.root=new Node(1,b,c);
        },
    
        //前序遍历
        preTravel: function(root){
            if(root==null){
                return;
            }
    
            console.log(root.data);
            this.preTravel(root.left);
            this.preTravel(root.right);
        },
    
        //中序遍历
        middleTravel: function(root){
            if(root==null){
                return;
            }
    
            this.middleTravel(root.left);
            console.log(root.data);
            this.middleTravel(root.right);
        },
    
        //后序遍历
        postTravel: function(root){
            if(root==null){
                return;
            }
    
            this.middleTravel(root.left);
            this.middleTravel(root.right);
            console.log(root.data);
        }    
    }
    一开始的时候,准备为这些遍历方法传入一个默认参数this.root结果发现会导致死循环,最后发现是因为,后面会将undefined作为参数传入,此时会自动使用默认参数,进入死循环。
    另外,定义原型方法时,调用另一个原型方法时,要在this作用域中查找。
    测试代码如下:
    
    var tree=new Tree();
    tree.create();
    tree.preTravel(tree.root);
    tree.middleTravel(tree.root);
    tree.postTravel(tree.root);
    
    

    相关文章

      网友评论

          本文标题:二叉树的遍历规则二

          本文链接:https://www.haomeiwen.com/subject/rinvbftx.html