本文
介绍了javascript二叉查找树的实现。供大家
分享,供大家
参考,如下:
二叉
搜索树:顾名思义,每个节点上的树的最大是仅有的两个分支;而留下的价值分支节点<右分支节点的值。
特点:插入节点,找到最大的最小节点,并对节点值进行
排序是非常方便的。
两叉查找树javascript实现
< / / { CDATA {!
打印输出
函数println(MSG){
document.write(味精+ );
}
节点类
var节点=函数(v){
this.data = V; / /节点的值
this.left = null; / /左节点
this.right = null; / /右节点
}
/ /二叉搜索树
Var BinarySearchTree =函数(){()
this.root = null; / /初始化,根节点是空的
插入节点
参数:v节点值
this.insert =
功能(v){
无功节点=新的节点(V);
如果(this.root = = null){
树是空的,新的节点直接进入根节点。
this.root =节点;
返回;
}
var CurrentNode = this.root; / /指针(从根节点开始向下看)
VaR parentNode = null;
而(真正的){
parentNode = CurrentNode;
如果(V<CurrentNode。数据){
当前节点的
目标节点
如果是左插/即插,则节点被移动到左边节点。
currentnode.left CurrentNode =;
如果(CurrentNode = = null){
没有左边的节点,新的节点,直接进入左边的节点
parentnode.left =节点;
返回;
退出 }
}
{其他
否则,在右边的插头上,节点移动到
正确的节点。
currentnode.right CurrentNode =;
如果(CurrentNode = = null){
parentnode.right =节点;
返回;
}
}
}
}
找到最小的节点
this.min =函数(){
var p = this.root; / /节点
而(P!= null p.left!= NULL){
P = p.left;
}
返回p;
}
找到最大节点
this.max =函数(){
var p = this.root; / /节点
而(P!= null p.right!= NULL){
P = p.right;
}
返回p;
}
在
顺序遍历中
this.inorder =功能(根){
如果(根!= NULL){
This.inOrder(根。左); / /第一节点离开
println(根节点。数据); / /到根节点
This.inOrder(根节点,右); / /右节点
}
}
第一次遍历
this.preorder =功能(根){
如果(根!= NULL){
println(根节点。数据); / /第一根
This.preOrder(根。左); / /左节点
This.preOrder(根节点,右); / /右节点
}
}
在遍历之后
this.postorder =功能(根){
如果(根!= NULL){
This.postOrder(根。左); / /第一节点离开
This.postOrder(根节点,右); / /右节点
println(根节点。数据); / /到根节点
}
}
}
下面是一个测试
VaR btree =新BinarySearchTree();
沙特阿拉伯。《树左侧图3.9》的设计与分析
BTree.insert(6);
BTree.insert(3);
BTree.insert(8);
BTree.insert(1);
BTree.insert(4);
BTree.insert(9);
println(中序遍历:')
BTree.inOrder(B树。根);
println();
println(先序遍历:);
BTree.preOrder(B树。根);
println();
println(后序遍历:);
BTree.postOrder(B树。根);
println();
无功minnode = btree.min();
println(最小节点:+(minnode = =空不存在:minnode。数据));
println();
无功maxnode = btree.max();
println(最大节点:+(maxnode = =空不存在:maxnode。数据));
>
前序遍历:631489后序遍历:143986最小节点:1大节点:9 -->
输出结果:
中间顺序遍历:134689
序遍历:631489
后序遍历:143986
最小节点:1
最大节点数:9
希望本文能对javascript
程序设计有所帮助。