标签:左右 oid let 根据 key值 arc arch 插入 不成功
二叉排序树可能是空树,或者是存在以下特征的二叉树:
SearchBST(T, key),即二叉排序树的查找模块,
void SearchBST(BSTree t, int key)//确认树T与查找值KEY的存在
{
if(t==null || k==t->key)//先将key与根节点比较
return t;//若相同,则返回t
else if(key<t)
SearchBST(t->lchild, key);//若第一次比较结果,key比根节点小,从左子树找,最后返回
else
SearchBST(t->rchild, key);//若第一次比较结果,key比根节点大,从右子树找,最后返回
}
InsertBST(T, key),即在二叉排序树中的插入模块
二叉排序树的插入操作,可以按照以下思路进行:
void InsertBST(T, key)//确认树T与查找值KEY的存在
{
if(T == null) {//先确定是不是空树
创建一个结点,结点值为key;
申明该树的左右子树都是空树;
return 1;
}
if(T>key){//若key比根结点小,从左子树找
InsertBST(T->lchild,key);
else//若key比根结点大,从右子树找
InsertBST(T->rchild,key);
}
CreateBST(T),即创建二叉树,创建二叉树主要使用插入模块
typedef struct BSTNode
{
TElemType data;
struct BSTNode *lchild, *rchild;//创建左右子树
}
void CreateBST(T){
先创建一个数组,录入一些结点数据。
if (T == NULL){//树为空
T=new Node;
T->lchild=NULL;
T->rchild=NULL;
return 1;
}
else if(T>data){//若插入的值小于根结点,则从左子树开始插入
return InsertBST(T->lchild,data);
}
else if(T《data){//若插入的值大于根结点,则从右子树开始插入
return InsertBST(T->rchild,data);
}
DeleteBST(T, key),即删除关键字模块,需注意以下要点:
标签:左右 oid let 根据 key值 arc arch 插入 不成功
原文地址:https://www.cnblogs.com/czrsdsb/p/12731863.html