文章目录
- 22.1.3 平衡二叉树
 - 22.1.3.1 LL
 - 22.1.3.2 LR
 - 22.1.3.3 RR
 - 22.1.3.4 RL
 
22.1.3 平衡二叉树
平衡二叉树的特点:
- 二叉树左右两个子树的高度差不超过1
 - 任意节点的左右两个子树都是一颗平衡二叉树
 
在原来的平衡二叉树中,新增数据会破坏平衡性,所以需要进行旋转最小不平衡子树保持平衡。

确定支点:从添加的节点开始,不断的往父节点找不平衡的节点。
右旋:
   1.以不平衡的点作为支点
   2.将根节点的左侧往右拉
   3.原先的左子节点变成新的父节点,并把多余的右子节点出让,给已经降级的根节点当左子节点。
   
左旋:
   1.以不平衡的点作为支点
   2.将根节点的右侧往左拉
   3.原先的右子节点变成新的父节点,并把多余的左子节点出让,给已经降级的根节点当右子节点。
 
22.1.3.1 LL
左左:当根节点左子树的左子树有节点插入,导致二叉树不平衡。
以不平衡的点作为支点,进行一次右旋即可。
如图:分别新增数据 1 和 3在根节点左子树的左子树 ,破环了原有的平衡性,需要右旋一次。可知 7 为不平衡的节点,将7 作为支点进行右旋

右旋一次后,如图:

22.1.3.2 LR
左右:当根节点左子树的右子树有节点插入,导致二叉树不平衡。
需要先局部左旋,再整体右旋。
如图,新插入 数据6 在根节点左子树的右子树,破环平衡,需要先局部左旋,再整体右旋。
 
先局部左旋:


再整体右旋:

22.1.3.3 RR
右右:当根节点右子树的右子树有节点插入,导致二叉树不平衡。

以不平衡的点作为支点,进行一次左旋即可。

22.1.3.4 RL
右左:当根节点右子树的左子树有节点插入,导致二叉树不平衡。
需要先局部右旋,再整体左旋。
如图,新插入 数据68在根节点右子树的左子树,破环平衡,需要先局部右旋,再整体左旋。

先局部右旋,如图:


再整体左旋,如图:


















![[NSSRound#4 SWPU]hide_and_seek-用gdb调试](https://i-blog.csdnimg.cn/direct/64d705c03ef44f208a66d61e44dc4235.png)

![re题(25)BUUFCTF-[GUET-CTF2019]re](https://i-blog.csdnimg.cn/blog_migrate/05437e17bfb1189ab11a35ca9a1731a2.png)