数据结构-平衡二叉树

平横二叉树的定义

平衡因子,节点的左右子树的高度差定义为该节点的平衡因子。
在这里插入图片描述
子树节点高度差的绝对值不大于1即为平衡二叉树。即节点的平衡因子不大于1.

直观点说就是:某个节点的左子树在0层而右子树已经到-2层就失衡了

平横二叉树的生成

平衡二叉树在插入数据的时候首先要保证当前数据进入平衡二叉树后是否平衡,一旦出现了不平衡的情况需要进行一个调整。这个调整的步骤就是生成平衡二叉树的关键所在,。
下面使用一组数据进行说明
数据{11,21,31,41,1,91,0}
依次序生成二叉树
在这里插入图片描述

此时元素11的平衡因子为2,已经出现了失衡。那么可以采用(RR平衡旋转

在这里插入图片描述

为什么要命名为RR旋转?

失衡的节点是11 其右子树(R)右节点(R) 导致失衡

接着继续进行元素的插入
在这里插入图片描述
此时元素31的平衡因子已经失衡,对失衡的二叉树采用RR旋转即可平衡
在这里插入图片描述
继续插入元素,可以看到不平衡的二叉树(LL平衡旋转)完成了二叉树的平衡
在这里插入图片描述
以上我们即可完成该组元素插入。
总结:节点左子树导致失衡采用LL旋转,右子树失衡采用RR旋转
但是还有一种情况:当某次平衡旋转不能够完成平衡二叉树怎么办呢?下面举例来看:
在这里插入图片描述
以上经过一次平衡旋转后无法达成平衡二叉树.那么需要按照下面的步骤进行:
在这里插入图片描述
以上先对3,7进行左旋转接进行右旋转,这种操作称为LR平衡旋转
接着进行RL平衡旋转的一个例子演示:
在这里插入图片描述

观察RL平衡旋转这个例子进行总结
总结:失衡节点(平衡因子大于1)的左孩子的右子树上插入新节点导致失衡采用LR平衡,失衡节点的右孩子的左子树上插入新节点导致了失衡使用的是RL平衡

平衡二叉树的查找

平衡二叉树的最大深度为O(log2n),平均查找长度为O(log2n)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图图是只猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值