【发布时间】:2017-03-02 15:52:29
【问题描述】:
“两个节点交换,纠正 BST”似乎是一个非常讨论/流行的算法。
与其他更通用的 BST 修复算法相比,这种“交换两个故障 BST 节点”算法有什么特别之处?
【问题讨论】:
标签: algorithm data-structures binary-search-tree
“两个节点交换,纠正 BST”似乎是一个非常讨论/流行的算法。
与其他更通用的 BST 修复算法相比,这种“交换两个故障 BST 节点”算法有什么特别之处?
【问题讨论】:
标签: algorithm data-structures binary-search-tree
我可能是错的,但我怀疑这个问题是 100% 人为设计的,只是一个很好的练习来评估你是否掌握了二叉搜索树、中序遍历和一般树递归。我觉得你在实践中使用它的可能性极小,因为 BST 的元素乱序通常表明某处存在错误或逻辑错误。
您问的第二个问题 - 更一般的“修复这棵树以使其成为二叉搜索树”问题怎么样? - 是一个很好的。这基本上相当于对二叉树的元素进行排序,然后使用中序遍历将元素放置到正确的位置(你明白为什么吗?)同样,如果你真的最终做了这样的事情,我会感到非常惊讶,因为在二叉树中存储无序元素然后决定以这种方式重新排序它们是不常见的。
【讨论】: