平衡二叉树

二叉排序树的查找性能取决于二叉排序树的形状,在O(log 2n)和 O(n)之间
平均查找次数的实现:
在这里插入图片描述
平衡二叉树:或者是一棵空的二叉排序树,或者是具有下列性质的二叉排序树:
(1)根节点的左子树和右子树平衡因子最多相差一;
(2)根节点的左右子树也都是二叉平衡树。
平衡因子:
节点的平衡因子是该点的左子树深度与右子树的深度之差
在这里插入图片描述
最小不平衡子树:
在平衡二叉树构造过程中,以距离插入最近的、且平衡因子的绝对值大于1的节点为根的子树。
为啥是绝对值呢?
可以是左树减右树,也可以是右树减左树

构造平衡二叉树思想:每插入一个节点
(1):从插入节点开始向上计算各节点的平衡因子,如果某节点的平衡因子的绝对值超过1,说明插入操作破坏了二叉排序树的平衡性,需要进行平衡调整;否则继续执行插入操作。
(2):如果二叉排序树不平衡,则找出不平衡因子树的根节点,根据新插入的节点与最小不平衡子树根节点之间的关系判断调整类型。
(3):根据调整类型进行相应的调整,使之成为新的平衡子树。
在这里插入图片描述
对于不平衡的树进行旋转

在这里插入图片描述

节点A为最小不平衡子树的根节点,对该子树进行平衡调整有这4种情况
(1)LL型
在这里插入图片描述
在这里插入图片描述
实例:顺时针旋转
在这里插入图片描述
(2)RR型
在这里插入图片描述
LL型和RR型都遵循一个扁担原理,哪边重就将哪边往上提,根往下压。
(3)LR型

在这里插入图片描述
实例中是因为根节点左子树的右子树不平衡引起的
在这里插入图片描述
调整
在这里插入图片描述
(4)RL型
在这里插入图片描述
构造平衡二叉树的步骤:
(1):计算平衡因子
(2):判断平衡性
(3):若不平衡,找出最小不平衡的根节点
(4):判断调整类型
(5):根据调整类型进行调整

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值