二叉排序树的插入和删除

本文深入解析二叉排序树的基本概念,并详细阐述如何进行元素的插入与删除操作,包括针对不同情况的具体步骤与证明。

二叉排序树就是左子树的数字比树根小,右子树的数字比树根大的一颗二叉树。

插入一个结点到这样的树里很简单。

首先比它和根谁大,大往右找插入位置,小往左找插入位置。

到了子树继续比和根谁大,如果大就往右找,如果小就往左找,这样递归到某个子树的根没有左子树或者右子树,如果小,就插在左子树上,如果大就插在右子树上。


删的话有一点点麻烦:

1,如果你要删的结点是叶子,那很好办,直接删了就行了。

2,如果你要删的结点只有左子树或者右子树,那也很好办,把这个结点删了之后比它的子树挂父亲结点上空出来那个位置就行了。

证明:如果被删除结点是父亲的左孩子,那么被删除结点小于父亲,且被删除结点的全部子树都小于父亲(如果有大于父亲的子树结点,那么在插入的时候就应该被挂在父亲的右子树上,而不是被删除结点的子树上),因此把相应子树都挂在父亲的左孩子就行了。同理右子树是都大于,于是只要把被删除结点的子树挂父亲上,顶替它原来的位置就行了。

注意:这个是说被删除结点只有一颗子树的情况。

3,被删除的结点两个子树都有,这个有一点点麻烦,被删除结点的左子树很好办,它可以顶替被删除结点在其父结点中的位置,但是右子树怎么办?我们将右子树整体看作是一个结点,由于右子树比被删除结点大,于是右子树比整个被删除结点的左子树要大,于是右子树应该插入在左子树的右边,再将左子树看作一个整体,于是右子树的插入位置就是左子树的右下角。



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值