【问题标题】:Splay Tree Deletion展开树删除
【发布时间】:2021-12-21 17:52:05
【问题描述】:

我在概念化从展开树中删除的过程时遇到了麻烦。鉴于此初始树,我想删除节点 78。

根据我课程中的信息(来自 Goodrich、Tamassia 和 Goldwasser),BST 中已删除的节点应替换为通过从应为 91 的节点执行按顺序遍历到达的下一个节点。这然后节点应该张开到树的顶部。但是,这里的可视化器并非如此。 https://www.cs.usfca.edu/~galles/visualization/SplayTree.html

【问题讨论】:

    标签: algorithm data-structures tree


    【解决方案1】:

    可视化工具将 78 替换为其顺序前任 (70) 并展开该节点。 (顺序后继,即排序顺序中的下一个键是 83,而不是 91。)一般来说,伸展树具有极好的延展性,只要您将刚刚下降的路径的长度大约减半,同时将其他路径设置为大多数时间长一点,从渐近性能的角度来看,您这样做是正确的(但是,您的教授可能有不同的想法)。

    【讨论】:

    • 谢谢!因此在实践中,您选择替换已删除节点的节点并不重要,即影响性能等。
    • @M.Choy 你必须保持树的排序,否则,是的,操作将是 O(log n) 摊销。
    猜你喜欢
    • 1970-01-01
    • 2016-07-16
    • 2016-07-26
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 2018-01-25
    相关资源
    最近更新 更多