二叉树的遍历规则二
原文链接:https://www.jianshu.com/p/768892e095bf
我的理解:参考建树的方式和创建原型方法的方式。
【二叉树的遍历规则二】二叉树的常用遍历为前序遍历,中序遍历,后序遍历,三种遍历方法仅仅是交换了代码的运行顺序而已,代码如下:
function Node(data,left,right){
this.data=https://www.it610.com/article/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);
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量