此文章主要是自己时不时回来翻看的,别拍呵呵
//解释,T是这颗二叉树的根,key是要查找的关键字,f用来存储当前节点的父节点,p表示如果找到key,则key是当前节点,不过没找到,则是当前的这个空节点的父节点f
如果查找成功,返回true,如果失败返回false,然后将新节点插入到f的孩子中
boolean Search(BiTree T, int key, BiTree f, BiTree p)
{
if(T==null)
{
p == f;
return false;
}
if(T.data == key)
{
p == T;
return true;
}
else if(T.data > key)
{
return Search(T.lchild,key,T,p);
}
else
{
return Search(T.rchild,key,T,p);
}
}
动态插入节点,构建二叉排序树
boolean Insert(BiTree T, int key)
{
if(!Search(T,key,null,p))
{
BiTree e = new BiTree(key);
if(p==null)//说明f是null,说明一开始就是一颗空树
{
T = e;
}
else if(p.data > key)
p.lchild = e;
else
p.rchild = e;
retrun true;
}
return false;
}