Algorithm 特定案例平衡

Algorithm 特定案例平衡,algorithm,avl-tree,Algorithm,Avl Tree,我一直在重温一堂课的旧基本算法,这是一门在线课程,我将在圣诞节后观看。在我到达AVLs之前,它一直是一本轻松的读物。当我学习它们的时候,我不记得有过任何问题,但在10年多一点的时间后,我不再那么优秀了。虽然我很容易解决大多数情况,但我在这个例子上坚持了5个多小时: 51 / \ 19 55 / \ \ 10 37 61 / \ 28 46 在树上插入40个,左边是46岁的孩子,需要一次向左旋转来固定平衡…为什么?40不是被插入到19岁的孩

我一直在重温一堂课的旧基本算法,这是一门在线课程,我将在圣诞节后观看。在我到达AVLs之前,它一直是一本轻松的读物。当我学习它们的时候,我不记得有过任何问题,但在10年多一点的时间后,我不再那么优秀了。虽然我很容易解决大多数情况,但我在这个例子上坚持了5个多小时:

    51
   /  \
  19   55
 / \    \
10  37   61
    / \  
   28 46
在树上插入40个,左边是46岁的孩子,需要一次向左旋转来固定平衡…为什么?40不是被插入到19岁的孩子的左边吗?他变得不平衡了?为什么不是双重旋转?我看不见什么?

事情是这样的:
1.插入后:

    51
   /  \
  19   55
 / \    \
10  37   61
    / \  
   28 46
      /
     40
很明显,
19
节点变得不平衡。
2.这就是它向左旋转一次的原因。因此,它变成:

     51
    /  \
   37   55
   / \   \
  19  46  61
 / \   /    
10 28 40 

现在树又平衡了。

有趣的是,试图解释我的问题揭示了我做错了什么。
树是左重的,树的左子树不是右重的,所以它是一个单独的旋转

你确实是对的,我知道这就是答案,但我恐怕我想要的是解释而不是答案。谢谢你的麻烦!