二叉树(Binary Search Tree),或者是一棵空树,或者是具有下列性质的二叉树:
- 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
- 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
- 它的左、右子树也分别为二叉排序树。
代码实现如下:
function Node()
{
this.left=null;
this.right=null;
this.value=null;
}
Node.prototype.add=function(value)//子节点的增加
{
if(value!=null && typeof value != 'undefined')
{
if(this.value==null)
{
this.value=value;
return ;
}
var node=new Node();
node.value=value;
if(this.value >= value)// on left
{
if(this.left==null)
{
this.left=node;
}
else
{
this.left.add(value);
}
}
else // on right
{
if(this.right==null)
{
this.right=node;
}
else
{
this.right.add(value);
}
}
}
}
Node.prototype.print=function(data)//打印排序数组
{
//if((typeof data == 'undefined') || !(data instanceof Array) )return;
if(this.left!=null)
{
this.left.print(data);
}
data.push(this.value);
if(this.right!=null)
{
this.right.print(data);
}
}
function app()
{
var data=[2,6,56,102,5,4,47,7000,200,45,24,85,63,954,6222,5] ;
var root=new Node();
//以下构造二叉树
for(var i=0;i<data.length;i++)
{
root.add(data[i]);
}
var rs=[];
root.print(rs);
alert(rs.join(","));
}