平衡二叉树的手动调整方法

平衡二叉树的手动调整方法

看书左旋右旋看着懵逼,不懂往左旋转往右旋转到底是怎么个旋转法。

总结了一个万能的手动调整方法,不用记忆什么LL,LR,RL,RR的形式,通吃。

 

当新插入一个节点,导致不平衡,进行手动调整。

步骤有四步:

1。找到最小不平衡子树(和其根节点)

2。从根节点出发,沿插入路径找三个节点

3。调整这三个节点。(找出中位数,让中位数作为根节点,其余两个一左一右)

4。剩下的节点,左右子树的位置保持不变,再找到最后一个节点的插入位置。

 

(1)先以三个节点的情况演示,假设插入了15,3,7,出现不平衡。

 平衡二叉树的手动调整方法

 

 

 

 

 

 

 

最小不平衡子树就是三个节点。找出中位数7,作为根节点。然后3放到左边,15放到右边。调整完成。

平衡二叉树的手动调整方法

(2)继续插入10和9,导致不平衡。

平衡二叉树的手动调整方法

最小不平衡子树如图所示。从根节点出发找到三个节点。

平衡二叉树的手动调整方法

调整这三个节点的位置,方法和上面一样,把中位数10作为根节点。

平衡二叉树的手动调整方法

(3)继续插入8导致不平衡,以及最小不平衡子树。

平衡二叉树的手动调整方法

7是根节点。从7开始,找到7,10,9三个节点。调整这三个。

 平衡二叉树的手动调整方法

让9做根节点,7在左,10在右。

平衡二叉树的手动调整方法

对于剩下的节点,左右子树位置保持不变。3仍然在最左,15仍然在最右。

平衡二叉树的手动调整方法

然后再找到8应该插在哪里就行了。调整完成。

平衡二叉树的手动调整方法

 

复述一遍方法:

1。找到最小不平衡子树(和其根节点)

2。从根节点出发,沿插入路径找三个节点。

3。调整这三个节点。(找出中位数,让中位数作为根节点,其余两个一左一右)

4。剩下的节点,左右子树的位置保持不变,再找到最后一个节点的插入位置。

 

这套方法万能,不用记书上的四种样式。