平衡二叉树的平衡机制

1.什么是平衡二叉树,就是任意节点的左右子树的层数之差不超过1.前提它是一个二叉树。

 

2.一个平衡二叉树,在以下4种情况下,会破坏平衡(为啥要知道4种基本的情况,因为跟左旋和右旋的息息相关)。

  2.1根节点--->子树--->左子节点。增加节点操作。简称左左

  2.2根节点--->子树--->右子节点。增加节点操作。简称左右。

  2.3根节点--->右子树--->左子节点。增加节点操作。简称右左。

  2.4根节点--->右子树--->右子节点。增加节点操作。简称右右。

 

3. 左旋和右旋的操作是如何进行的。基本要点和结论如下。

   某二叉树在增加一个节点的时候,如果这个节点打破了平衡(根据概念1中)。那么就会触发旋转机制。

    3.1   如果是左边的增加的节点打破了平衡,那么就要右旋。如果是增加右边的节点打破了平衡,那么就要左旋。

            实际操作发现,2.2和2.3的情况。光左旋或者光右旋转一次根本不够。还是会不平衡。

            那么需要 支点下方的子树先整体左旋或者右旋(先变成左左或者右右的情况)。然后再进行第二步左旋或者右旋。

4.什么是支点? ---就是新增一个节点后,往根节点方向去找。开始出现的不平衡的那个节点

 

5.右旋和左旋的中间过程。

    5.1支点一定会降级。

    5.2 (右旋)---支点 左子节点 会升级,并让出右子节点,给降级的原支点当左子节点。(左旋相反)

 

6.图形示例。

 

 6.1 根据平衡二叉树,找出打破平衡的支点,那就是数字7.(根节点)。 目前是左边打破的平衡,所以要右旋。

6.2 根据规律和结论。 节点数字7(支点).必须要降级。 右旋的话。支点的左子节点会升级。所以数字4会升级成根节点。并且支点的左子节点右子树(或者右节点---看成一个整体),会让出。给降级的节点(原数字7)当左子树(或者左节点---看成一个整体)。 6.3 结果图。

 

posted @ 2023-09-17 22:55  七分sunshine!  阅读(53)  评论(0编辑  收藏  举报