对于AVL树,在从需要重构的树中删除节点时,我正在阅读的书指出有一些规则可以遵循来选择要重构的节点。以下是一个示例:
44
/ \
17 62
/ \
50 78
/ \ \
48 54 88
这是在删除节点17的子节点后,AVL树失去平衡时的情况。
我读的书上指出,我们需要找到第一个失衡的位置z,从节点17开始向上查找,然后y是z中高度更高的孩子,最后x是y中高度更高的孩子。但是,如果y的两个孩子高度相同,则x将与y相同。在这种情况下,x是78,y是62,z是44。
现在提出了一个问题,为什么我们选择x与y在同一侧?如果我选择x不在y的同一侧,AVL树会有什么问题吗?我尝试举例并尝试选择两种类型的x并重构AVL树。但是,我无法找到任何选择x作为任何一个孩子所引起的问题。希望能得到帮助,帮助我解决这个问题。