【发布时间】:2018-07-08 11:21:21
【问题描述】:
在处理 AVL 树实现时,我遇到了一个旋转破坏 BST 属性的情况。
我很确定我做错了什么,但我不知道是什么。
我将 41、49、21 和 47 插入到 AVL 树中。当我再次添加 49 时,它发出“Out of Balance”的信号,如下所示。
(Out of balance !!!)
( at 49 L-R )
41 41
/ \ / \
21 49 => 21 49
/ /
47 47
\
49
因此我尝试向左旋转 47,向右旋转 49,如下所示
Rotate 47 Rotate 49
to Left to Right
41 41 41
/ \ => / \ => / \
21 49 21 49 21 49
/ / / \
47 49 47 49
\ /
49 47
这棵树的平衡性更好,但我认为我在 49 的右侧有 49 打破了右下子树中的 BST 属性
49
/ \
47 49
我认为平衡这棵树的最佳方法是跟随
47
/ \
41 49
/ /
21 49
但我不知道如何使用 41-49-21-47-49 号码添加序列到达那里。也许这不是正确的结果,但我在这里迷路了。
最佳结果是什么?我应该如何到达那里?
谁能告诉我我做错了什么?
非常感谢!!!
【问题讨论】:
标签: algorithm binary-search-tree avl-tree