【问题标题】:Will an AVL tree ever need multiple rebalances? [duplicate]AVL 树是否需要多次重新平衡? [复制]
【发布时间】:2014-03-12 23:05:27
【问题描述】:

假设我有一个平衡的 AVL 树,在 ADD 之后,它变得不平衡。 AVL 树是否总是通过单轮或双轮重新平衡,或者是否存在需要更多轮转的情况?

【问题讨论】:

    标签: data-structures avl-tree


    【解决方案1】:

    假设平衡不变量在插入之前得到满足,单次重新平衡将始终足以恢复平衡不变量。

    AVL 不变量是任何节点的子深度最多相差 1。单次插入后,子深度最多相差 2。单次遍历到插入节点的路径,必要时旋转,能够解决不平衡。

    【讨论】:

    • 我没有投反对票,但我认为这样的主张需要与证明一起使用。
    • 这很简单。 AVL 不变量是任何节点的子深度最多相差 1。在单次插入之后,子深度最多可以相差 2。单次遍历到插入节点的路径,必要时旋转,能够解决不平衡。
    • @Sneftel:您可以将该评论移至您的答案中吗?
    猜你喜欢
    • 1970-01-01
    • 2014-01-21
    • 2016-03-29
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多