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

最佳答案

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

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

关于c - AVL树旋转。不同的可能性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23242995/

10-12 15:01