营销型网站建设哪家好,招聘网站建设方案,iis5.1建网站,加快建设企业门户网站建文章目录前置概念一、构造平衡二叉树的基本思想二、一个示例三、平衡二叉树的调整细节#xff08;1#xff09;LL型#xff08;顺时针 #xff09;举例#xff08;2#xff09;RR型#xff08;逆时针#xff09;#xff08;3#xff09;LR型#xff08;先逆时针再顺…
文章目录前置概念一、构造平衡二叉树的基本思想二、一个示例三、平衡二叉树的调整细节1LL型顺时针 举例2RR型逆时针3LR型先逆时针再顺时针举例4RL型先顺时针再逆时针5四种调整类型总结四、例题解题过程参考视频懒猫老师-数据结构-(59)平衡二叉树【互动视频】前置概念 最小不平衡子树在平衡二叉树的构造过程中以距离插入结点最近的、且平衡因子的绝对值大于1的结点为根的子树。 例如上图此处4就是最小不平衡子树的根节点。
一、构造平衡二叉树的基本思想
每插入一个结点
从插入结点向上计算各结点的平衡因子如果某结点的平衡因子的绝对值大于1则说明插入操作破坏了二叉排序树的平衡性需要进行平衡调整否则继续执行插入操作。如果二叉排序树不平衡则找出最小不平衡子树的根节点根据新插入结点与最小不平衡子树根节点的关系判断调整类型。根据调整类型进行相应的调整使之成为新的平衡子树。
二、一个示例 三、平衡二叉树的调整细节
设结点A为最小不平衡子树的根结点对该子树平衡调整有以下四种情况
LL型RR型LR型RL型
1LL型顺时针
插入结点X之后这棵二叉树不平衡了。B结点的平衡因子变成1h1-hA结点的平衡因子变成2h2-h。这里我们称X结点为问题的发生者A结点为问题的发现者。从问题的发现者A结点到问题的发生者要经过左子树的左子树即LL。
现在A发现二叉树不平衡了就需要对二叉树进行调整。 旋转扁担原理 冲突旋转优先 利用扁担原理A结点的左右子树不平衡了左子树“重”右子树“轻”。那么我们把B结点往上抬A结点往下压进行了一个顺时针旋转A结点变成了B结点的右子树B结点原来的右子树调整为A结点的左子树B结点的右子树上的所有结点一定小于A结点所以将B原来的右子树调整为A结点的左子树是最合适的。
举例 2RR型逆时针 3LR型先逆时针再顺时针 理解记忆想象我们正在背一个扁担发现左边重但对于左边来说左边的右边又比较重所以这个LR型调整成平衡二叉树更为复杂。我们先需要对左边好好调整一番规整一下逆时针旋转调整成LL型让所有重量完全彻底地压到左边。接着对得到的LL型一次性向右调整顺时针旋转。
举例 4RL型先顺时针再逆时针 5四种调整类型总结 四、例题 解题过程 找到最小不平衡子树的根结点5 判断类型从问题的发现者开始到问题的发生者先左后右画圈的为RL型不平衡树。注意下面对画圈的部分独立操作。 将RL型的不平衡树进行顺时针旋转变成RR型 插入结点9发现二叉树又不平衡了找到最小不平衡子树的根结点4 判断类型RR型不平衡树对RR型不平衡树进行逆时针旋转