二叉树的遍历规则二

原文链接: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);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 上一篇文章讲述了树的概念, 特征以及分类, 旨在让我们理解什么是树, 树的一些常用的概念是什么,树的分类有哪些等。...
    DevCW阅读 2,072评论 4 10
  • 数据结构和算法--二叉树的实现 几种二叉树 1、二叉树 和普通的树相比,二叉树有如下特点: 每个结点最多只有两棵子...
    sunhaiyu阅读 6,529评论 0 14
  • 2016年1月14日,参加培训学习的第10天! PS课程结束后,崔教授没有立马切换频道到新的软件学习中,而是给我们...
    麦子飞呀飞阅读 93评论 0 0
  • 几周前,林告诉我,他的姐姐想约我一起吃饭,问问我的意见,说实话,我有些害怕这样的场合,不知道该说些什么,做些...
    lavender_琉璃阅读 269评论 0 1
  • 我是小一,每天一篇原创第72篇 都说女孩富养,男孩穷养 穷养也好富养也罢,都不如用爱养。“爱”才是一个孩子最需要的...
    壹姐微幸福阅读 202评论 0 0