【问题标题】:Why would two nodes of a BST be in the wrong place, anyway?无论如何,为什么 BST 的两个节点会出现在错误的位置?
【发布时间】:2017-03-02 15:52:29
【问题描述】:

“两个节点交换,纠正 BST”似乎是一个非常讨论/流行的算法。

与其他更通用的 BST 修复算法相比,这种“交换两个故障 BST 节点”算法有什么特别之处?

【问题讨论】:

    标签: algorithm data-structures binary-search-tree


    【解决方案1】:

    我可能是错的,但我怀疑这个问题是 100% 人为设计的,只是一个很好的练习来评估你是否掌握了二叉搜索树、中序遍历和一般树递归。我觉得你在实践中使用它的可能性极小,因为 BST 的元素乱序通常表明某处存在错误或逻辑错误。

    您问的第二个问题 - 更一般的“修复这棵树以使其成为二叉搜索树”问题怎么样? - 是一个很好的。这基本上相当于对二叉树的元素进行排序,然后使用中序遍历将元素放置到正确的位置(你明白为什么吗?)同样,如果你真的最终做了这样的事情,我会感到非常惊讶,因为在二叉树中存储无序元素然后决定以这种方式重新排序它们是不常见的。

    【讨论】:

    • 啊,所以你保留现有的树并覆盖节点,因为元素已经在数组中排序,所以进行有序遍历。我在想,你将如何对尚未构建的树进行中序遍历,但我们会覆盖这棵树是有道理的。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多