平衡二叉树左右旋

平衡二叉树(Balanced Binary Tree)是一种特殊的二叉搜索树(BST),它确保了树的高度尽可能低,从而保证了查找、插入和删除操作的时间复杂度接近O(log n)。为了保持平衡,平衡二叉树(如AVL树、红黑树等)在插入或删除节点后可能会进行旋转操作。

这里我们主要讨论AVL树的旋转操作,包括左旋(Left Rotation)和右旋(Right Rotation)。

左旋(Left Rotation)

左旋操作通常发生在右子树比左子树高很多,导致树不平衡时。左旋的目的是将较高的右子树的一部分移动到左子树中,以降低树的高度并恢复平衡。

示例

假设我们有一个AVL树,其结构如下:

   1
    \
     2
      \
       3


这个树不平衡,因为1的平衡因子为-2,左子树为0,又子树为2

左旋后的树结构如下:

  2
 / \
1   3       
步骤解释:
  1. 将1的右子树(2)提升为新的根节点。
  2. 将原来的根节点1降为新的根节点2的左子节点。

右旋(Right Rotation)

右旋操作与左旋相反,通常发生在左子树比右子树高很多时。右旋的目的是将较高的左子树的一部分移动到右子树中。

示例

假设我们有一个AVL树,其结构如下:

    3
   /
  2
 /
1
这个树不平衡,因为左子树比右子树高,平衡因子为2。

右旋后的树结构如下:

  2
 / \
1   3   


步骤解释:

  1. 将3的左子树(2)提升为新的根节点。
  2. 将原来的根节点3降为新的根节点2的右子节点。

先右后左双旋转(RL旋转)

RL旋转通常发生在以下情况:由于在A的右孩子的左子树上插入新节点导致以A为根的子树失去平衡。

示例

假设我们有一个AVL树,其结构如下:

        10  
       /  \  
      5    20  
           /  \  
          15   25
现在我们在以10为根(A)的右子树(20)的左子树(15)上插入一个新节点18,导致树失去平衡。为了恢复平衡,我们需要进行RL旋转。
        10  
       /  \  
      5    20  
           /  \  
          15   25
           \
            18
  1. 首先进行右旋:
        10  
       /  \  
      5    15 
             \  
              20
              / \
             18 25
  1. 然后左旋
         15 
       /    \  
     10     20
    /      /   \
   5      18  25



先左后右双旋转(LR旋转)

LR旋转与RL旋转相反,通常发生在以下情况:在A的左孩子的右子树上插入新节点,导致以A为根的子树失去平衡。

示例

假设我们有一个AVL树,其结构如下:

        10  
       /  \  
      5    20  
     / \      
    4   8  
   
现在我们在以10为根(A)的左子树(5)的右子树(8)上插入一个新节点9,导致树失去平衡。为了恢复平衡,我们需要进行RL旋转。
        10  
       /  \  
      5    20  
     / \    
    4   8  
         \
         9
  1. 左旋
         10  
       /    \  
      8      20  
     / \     
    5   9  
   /
  4 

  1. 右旋

         8  
       /    \  
      5      10  
     /      /  \  
    4      9   20
   

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值