Algorithm 特定案例平衡
我一直在重温一堂课的旧基本算法,这是一门在线课程,我将在圣诞节后观看。在我到达AVLs之前,它一直是一本轻松的读物。当我学习它们的时候,我不记得有过任何问题,但在10年多一点的时间后,我不再那么优秀了。虽然我很容易解决大多数情况,但我在这个例子上坚持了5个多小时:Algorithm 特定案例平衡,algorithm,avl-tree,Algorithm,Avl Tree,我一直在重温一堂课的旧基本算法,这是一门在线课程,我将在圣诞节后观看。在我到达AVLs之前,它一直是一本轻松的读物。当我学习它们的时候,我不记得有过任何问题,但在10年多一点的时间后,我不再那么优秀了。虽然我很容易解决大多数情况,但我在这个例子上坚持了5个多小时: 51 / \ 19 55 / \ \ 10 37 61 / \ 28 46 在树上插入40个,左边是46岁的孩子,需要一次向左旋转来固定平衡…为什么?40不是被插入到19岁的孩
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
现在树又平衡了。有趣的是,试图解释我的问题揭示了我做错了什么。
树是左重的,树的左子树不是右重的,所以它是一个单独的旋转 你确实是对的,我知道这就是答案,但我恐怕我想要的是解释而不是答案。谢谢你的麻烦!