BST(二叉排序树)

本文详细介绍了二叉排序树(BST)的概念,包括其定义、查询和插入操作,并提供了C++实现的源代码。通过递归和循环方式展示了如何在BST中查找元素以及如何插入新节点。同时,还提供了删除节点的方法和中序遍历的实现,以展示BST的基本操作。
摘要由CSDN通过智能技术生成

 

二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树

查询二叉搜索树:

递归的:

 

tree_search(x,k)

if(x==NULL || k==x.key) 

        return x;

 else

        return tree_search(x.left,k)

else return tree_search(x.right,k);                   //O(H) h是这个树的高度

 

用循环的:

    tree_srarch(x,k)

while(x!=NULL && X!=x.key)

{

         if(k<x.key)

                  x=x.left

           else 

                   x=x.right;

}

teturn x;

 

插入:

(思想,用两个指针,因为最后要找到插入节点的双亲。)

算法分析:

要将一个新值V插入到一颗二叉搜索树T中,需要调用过程tree_insert,该过程以节点z作为输入,其中z.key=v;

z.left=NULL,z.right=NULL,,,,,,这个过程要修改T和z的某些属性,来把z插入到树中的相应位置上

tree_insert(T,x)

y=NULL   //y 是一个节点

x=T.root

while(x!=NULL)

     y=x;

     if(z.key<x.key)

           x=x.left;

     else

           x=x.right;

z.p=y;

if(y==NULL)

      T.root==z        //空树

else  if (z.key<y.key)

      y.left=z;

else 

       y.right=z;

 

 

 

 

 

 

 

 </

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值