AVL树删除规则

问题描述 投票:2回答:1

对于AVL树,当从树中删除需要重组的节点时,我正在阅读的书中指出,遵循某些规则来选择要重组的节点。例如:

       44
     /   \
    17   62
        /  \
       50  78
      /  \   \
     48  54  88

这是删除节点(节点17的子节点)并且违反了height-balance属性后的AVL树。

我读过的书说它将使z为从节点17上升到的第一个不平衡位置,y为高度较大的z的子代,最后x为高度较大的y的子代。但是,如果y的子代都具有相同的高度,则x将与y在同一侧。在这种情况下,x为78,y为62,z为44。

现在是这里提出的问题。为什么我们选择x使其与y相同?如果我选择x与y不在同一侧,AVL树是否会有任何问题?我试图给自己一些例子,尝试选择两种类型的x,并重组AVL树。但是,我似乎找不到任何将x选为孩子的问题。感谢您为我提供的帮助。

对于AVL树,当从树中删除需要重组的节点时,我正在阅读的书中指出,遵循某些规则来选择要重组的节点。一个例子...

data-structures tree binary-search-tree avl-tree
1个回答
0
投票

有趣的是,这个主题在各种Web论坛中都有很多不同的答案。我尝试创建所有可能的AVL树节点删除方案,并且观察到,如果从AVL树的左侧删除该节点以使树不平衡,请根据节点可用性执行LL或LR(任何可能的旋转),并且树会均衡。反之亦然,删除右节点。

© www.soinside.com 2019 - 2024. All rights reserved.