bstree的插入删除函数

搜索二叉树的插入函数:

从根结点去寻找要插入的结点,如果值相等,则插入失败返回;如果key小于结点值则向左走,如果大于则向右走,直到按这个规则到达树叶子结点,则为插入的位置,然后new出这个结点插入.


搜索二叉树的删除:

先是从根开始去寻找要删除的结点(从根遍历如果值相等的找到,如果小与则向左寻找,如果大于则向右寻找),找到后执行删除动作,分为两种大的情况:

1.要删除的结点既有左边孩子又有右边孩子,这种情况直接删除不好操作,则将问题转化, 因为该结点的值是介于左树最大结点值和右树最小结点的值之间所以我们可以将 左子树中最大结点或者右树里最小结点来替该结点,然后去删除左子树中最大结点或者右树里最小结点. 具体操作是在左子树里查找最大的结点或者在右子树里查找最小的结点,找到后将该结点的值去替换要删除的结点得值,然后问题转化为删除左树最大的结点或者右树最小的结点,然后去删除相应的结点,这个结点一般最多是只有一个子树,所以比较好删除.

2.要删除的结点只有一个孩子,只有左孩子或者只有右孩子,或者没有孩子自己为叶子结点.这种和上面的第1种情况最终转化到的结果是一样的.只要将仅有的一个孩子提上去就行,或者没有孩子时将NULL提上去就行.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值