二叉树算法的收集
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了二叉树算法的收集,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2779字,纯文字阅读大概需要4分钟。
内容图文
function BinaryTree(){ var Node=function(key){ this.key=key; this.left=null; this.right=null; }; var root=null; var insertNode=function(node,newNode){ if(newNode.key<node.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); } } }; //构建二叉树this.insert=function(key){ var newNode=new Node(key); if(root===null){ root=newNode; }else{ insertNode(root,newNode); } }; var inOrderTraverseNode=function(node,callback){ if(node!=null){ inOrderTraverseNode(node.left,callback); callback(node.key); inOrderTraverseNode(node.right,callback); } }; //中序排序this.inOrderTraverse=function(callback){ inOrderTraverseNode(root,callback); }; var preOrderTraverseNode=function(node,callback){ if(node!=null){ callback(node.key); preOrderTraverseNode(node.left,callback); preOrderTraverseNode(node.right,callback); } }; //前序遍历this.preOrderTraverse=function(callback){ preOrderTraverseNode(root,callback); }; var postOrderTraverseNode=function(node,cllback){ if(node!=null){ postOrderTraverseNode(node.left,callback); postOrderTraverseNode(node.right,callback); callback(node.key); } }; //后续遍历this.postOrderTraverse=function(callback){ postOrderTraverseNode(root,callback); } var minNode=function(node){ if(node){ while(node&&node.left!=null){ node=node.left; } return node.key; } returnnull; } this.min=function(){ return minNode(root); }; var maxNode=function(node){ if(node){ while(node &&node.right!=null){ node=node.right; } return node.key; } returnnull; }; this.max=function(){ return maxNode(root); } var searchNode=function(node,key){ if(node==null){ returnfalse; } if(key<node.key){ return searchNode(node.left,key); }elseif(key>node.key){ return searchNode(node.right,key); }else{ returntrue; } }; this.search=function(key){ return searchNode(root,key); }; var removeNode=function(node,key){ if(node===null){ returnnull; } if(key<node.key){ node.left=removeNode(node.left,key); return node; }elseif(key>node.key){ node.right=removeNode(node.right,key); return node; }else{ if(node.left===null && node.right===null){ node=null; return node; } if(node.left===null){ node=node.right; return node; }elseif(node.right===null){ node=node.left; return node; } } } this.remove=function(key){ root=removeNode(root,key); }; } var nodes=[8,3,10,1,6,14,4,7,13]; var binaryTree=new BinaryTree(); nodes.forEach(function(key){ binaryTree.insert(key); }); var callback=function(key){ console.log(key); }; binaryTree.inOrderTraverse(callback); console.log("==============="); console.log(binaryTree.remove(10)); console.log("==============="); binaryTree.inOrderTraverse(callback);
原文:http://www.cnblogs.com/guoyansi19900907/p/7498781.html
内容总结
以上是互联网集市为您收集整理的二叉树算法的收集全部内容,希望文章能够帮你解决二叉树算法的收集所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。