“交换两个节点,纠正BST”似乎是一个非常讨论/流行的算法。
这个'交换两个错误的BST节点'算法有什么特别之处,而不是其他一些更通用的BST修复算法?
答案 0 :(得分:1)
我可能是错的,但我怀疑这个问题是100%设计的,只是一个很好的练习,可以评估你是否掌握了二元搜索树,顺序遍历和一般树递归。这让我感到非常不可能在实践中使用它,因为无序地使BST的元素通常表示某处出现错误或逻辑错误。
你提出的第二个问题 - 如何更通用"修复此树以使其成为二叉搜索树"问题? - 是一个很好的。这基本上相当于对二叉树的元素进行排序,然后使用inorder遍历将元素放到正确的位置(你知道为什么吗?)同样,如果你真的这么做,我会非常惊讶最终做了这样的事情,因为将无序元素存储在二叉树中然后决定以这种方式对它们进行重新排序是不常见的。