AVL树删除调试:非删除路径节点出现失衡异常
AVL树删除节点后非路径节点失衡排查问题
我用C++实现AVL树时遇到异常:删除节点并完成重平衡后,一个不在删除节点到根节点直接路径上的节点出现了失衡。我反复梳理删除和重平衡逻辑,始终找不到问题所在。
初始AVL树状态:
本次操作是删除值为“914”的节点。按算法执行删除及后续旋转重平衡后,发现一个并非删除节点直接祖先的节点失衡了。
删除与重平衡的各阶段树状态:
- 删除节点后:

- 平衡替换被删除节点的节点后:

- 平衡根节点(第一阶段):

- 平衡根节点(第二阶段):

我的算法会在每次旋转后更新节点高度和平衡因子,流程看起来符合AVL树删除的标准逻辑,但最终节点“381”出现失衡,完全找不到原因。
内容的提问来源于stack exchange,提问作者CsStudent
相关产品推荐
相关产品推荐

