AVL树旋转。不同的可能性

时间:2014-04-23 11:31:18

标签: c tree avl-tree

我对AVL树中的插入有疑问。我注意到在某些情况下,例如,在插入元素后,父元素和它的子元素都会破坏AVL条件。例如,这里https://www.youtube.com/watch?v=EsgAUiXbOBo,分钟。 12:50,当插入1后,4和3都打破了AVL条件。我的问题是我们应该在哪个节点进行轮换。最接近根的一个(在这种情况下是根本身)或距离根最远的那个,因为在这些情况下我们会得到两棵不同的树?或者两种方式都正确吗?

1 个答案:

答案 0 :(得分:-1)

从底部(插入的节点)开始旋转。

让我们考虑将所有节点平衡到P(包括)。所以P的子树是完全平衡的。我们去了P的父母(Q)。检查Q的子树并且(最终)旋转。结果树(如果执行旋转,根可能已更改)完全平衡。再次前进。