中序遍历二叉树
来源:互联网 发布:迪杰斯特拉算法伪代码 编辑:程序博客网 时间:2024/05/17 08:54
先上代码:
<script> var count=0; function BinaryTree(){ var Node=function(key){ this.key=key; this.left=null; this.right=null; } var insertNode=function(node,newNode){ if(node.key>newNode.key){ if(node.left==null){ node.left=newNode }else{ insertNode(node.left,newNode) } }else{ if(node.right==null){ node.right=newNode }else{ insertNode(node.right,newNode) } } } var root=null; this.insert=function(key){ var newNode=new Node(key); if(root==null){ root=newNode }else{ insertNode(root,newNode); console.log(root); } console.log(count++); } this.inOrderTraverse=function(callback){ inOrderTraverseNode(root,callback) } var inOrderTraverseNode=function(node,callback){ if(node!==null){ inOrderTraverseNode(node.left,callback) ; callback(node.key); inOrderTraverseNode(node.right,callback) } } } var nodes=[8,3,10,1,6,14,7,13]; var binaryTree=new BinaryTree(); nodes.forEach(function(key){ binaryTree.insert(key); }) //中序遍历二叉树 var callback=function(key){ console.log(key); } binaryTree.inOrderTraverse(callback)</script>
因为是接着上一篇文章《二叉树排序》,if you haven’t got last article,just click 二叉树排序
这里主要是增加了中序遍历的方法:inordertraverse和回调函数,在这个函数中,分别遍历函数的左节点,右节点;
this.inOrderTraverse=function(callback){ inOrderTraverseNode(root,callback) } var inOrderTraverseNode=function(node,callback){ if(node!==null){ inOrderTraverseNode(node.left,callback) ; callback(node.key); inOrderTraverseNode(node.right,callback) } }
这里为了便于观察;我们的回调函数中选择将当前的值进行打印
var callback=function(key){ console.log(key); }
最后我们进行调用:
binaryTree.inOrderTraverse(callback)
结果如下:
13678101314
阅读全文
0 0
- 【二叉树】中序遍历二叉树
- 中序遍历二叉树
- 中序遍历二叉树
- 中序遍历二叉树
- 二叉树 - 中序遍历
- 中序遍历二叉树
- 中序遍历二叉树
- 二叉树-中序遍历
- 中序遍历二叉树
- 中序遍历线索二叉树
- 二叉树 中序遍历 算法
- 递归中序遍历二叉树
- 二叉树的中序遍历
- 用递归中序遍历二叉树
- 【二叉树遍历】中序------非递归
- 非递归中序遍历二叉树
- 中序遍历二叉树 [非递归]
- 非递归中序遍历二叉树
- COM初学(三) ALT组件简单入门
- Qt:整体可拖动窗口
- http://www.arduino.cn/thread-6690-1-1.html
- 《Objective-C基础教程》第14章 代码块和并发性
- 用java操作xml文件
- 中序遍历二叉树
- ORDER BY 的实现与优化
- 习题7-3 多米诺效应(The Domino Effect, ACM/ICPC World Finals 1991, UVa211)
- 谷歌中国首席工程师详解TensorFlow:从入门到不放弃 ‖ PPT
- 台大陈蕴侬、李宏毅“应用深度学习”课程(国语)
- 绘制Bezier三角面片
- mysql更改引擎(InnoDB,MyISAM)的方法
- Oracle高性能SQL语句
- COM初学(二) 编写和使用一个简单的COM