二叉排序树与插入删除操作

二叉排序树;

二叉排序树的特点

1.如果它的左子树不空,则左子树上的所有节点的值均小于它的根节点的值;
2.如果它的右子树不空,则右子树上的所有节点的值均大于它的根节点的值;
3.它的左,右子树也分别为儿叉排序树
如何处理等号:可以右子树上的所有节点的值均大于或等于它的根节点的值
如果按中序遍历一棵儿叉排序树,则可得到一个按数值大小排序的递增序列。

插入

二叉排序树插入的过程基本是查找,因为是排序的树,所以可以进行快速的对比,最终将节点以叶子的形式增加到树中

删除(主要考虑的是如何在删除后仍然保持排序的状态)

删除的三种情况;
1.是叶子节点-------直接删除
2.有一个孩子-------让孩子直接“继承”双亲的位置
3.有两个孩子--------删除第三种情况的两种方法:

方法一:
这里有第二种常用的方法;

为了保持二叉排序树的结构(中序遍历后由小到大),有两种思路,一种就是从要删除结点的左子树中选取最大的结点进行替代之,另一种就是从要删除的结点的右子树中选取最小的结点替代之。

  • 二叉树的删除主要是当双亲节点在树中去除后,孩子节点的处理方式。
    比如说在左子树上找中序最后一个节点填补

另一种方法比较不常用:
根据情况让左(或右)子树替代原来双亲的位置,让另一个子树每个元素重新插入。
【之前这个方法是错误的:根据情况让左(或右)子树替代原来双亲的位置,让另一个子树作为其"兄弟树"(应该是没有这个名词)的最值节点的右(或左)子树。之前没有仔细思考,这种方法会破坏二叉排序树的那种平衡的形状】
例子(数据结构,人民邮电出版社):

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

当被删节点的左右子树都存在时

在这里插入图片描述

解决方法一:

用左子树中的最大的元素(或者右子树中的最小元素替换)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

错误示例

在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值