二叉排序树插入操作

有了二叉排序树的查找函数,那么所谓的二叉排序树的插入,其实也就是将关键字放到树中的合适位置而已,代码如下。

/*  当二叉排序树T中不存在关键字等于key的数据元素时,  */
/*  插入key并返回TRUE,否则返回FALSE  */
Status  InsertBST(BiTree  *T,  int  key)
{
BiTree  p,  s;
/*  查找不成功  */
if  (!SearchBST(*T,  key,  NULL,  &p))        
{
s  =  (BiTree)malloc(sizeof(BiTNode));
s->data  =  key;
s->lchild  =  s->rchild  =  NULL;
if  (!p)
/*  插入s为新的根结点  */
*T  =  s;               
else  if  (key  <  p->data)
/*  插入s为左孩子  */
p->lchild  =  s;        
else
/*  插入s为右孩子  */
p->rchild  =  s;        
return  TRUE;
}
else
/*  树中已有关键字相同的结点,不再插入  */
return  FALSE;          
}


这段代码非常简单。如果你调用函数是“In-sertBST(&T,93);”,那么结果就是FALSE,如果是“InsertBST(&T,95);”,那么一定就是在93的结点增加一个右孩子95,并且返回True。


有了二叉排序树的插入代码,我们要实现二叉排序树的构建就非常容易了。下面的代码就可以创建以下的树:
int  i;int  a[10]  =  {  62,  88,  58,  47,  35,  73,  51,  99,  37,  93  };BiTree  T  =  NULL;for  (i  =  0;  i  <  10;  i++){InsertBST(&T,  a[i]);}
在你的大脑里,是否已经有一幅随着循环语句的运行逐步生成这棵二叉排序树的动画图案呢?如果不能,那只能说明你还没真理解它的原理。
 

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值