您的位置:首页 > 理论基础 > 数据结构算法

非递归实现二叉查找树插入操作

2017-12-04 15:05 197 查看
首先应该完成一个查找操作,该函数将会返回查找路径上的最后一个结点。我们可以设置一个引用形参,然后将其指针保存并且返回。那么接下来的插入操作也比较容易实现了。

/*非递归查找二叉树*/
/*若找不到,则返回查找路径上最后一个结点*/
Status SearchBST_I(BSTree T,KeyType key,BSTree &p){
p = T;
if(T == NULL)   p = NULL;
while(p){
if(p->data.key == key)  return OK;
else if(p->data.key > key){
if(p->lchild == NULL)   break;
p = p->lchild;
}
else if(p->data.key < key){
if(p->rchild == NULL)   break;
p = p->rchild;
}
}
return ERROR;
}
/*非递归二叉查找树插入操作*/
Status InsertBST_I(BSTree &T,KeyType key){
BSTree p,n;
if(SearchBST_I(T,key,p) == OK)  return ERROR;   //找到了,则不会插入
else{
n = (BSTree)malloc(sizeof(BSTNode));
if(n == NULL)   return OVERFLOW;
n->lchild = NULL;
n->rchild = NULL;
n->data.key = key;
if(!p)  T = n;
else{
if(p->data.key < key)   p->rchild = n;
else    p->lchild = n;
}
}
return OK;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐