这是一道面试题。找到 BST 中的第二个最大值。
最大元素是 BST 中最右边的叶子。第二个最大值要么是它的 parent ,要么是它的左 child 。所以解决方案是遍历BST,找到最右边的叶子,并检查它的父节点和左子节点。
有意义吗?
最佳答案
不,那是错误的。考虑这个 BST:
137
/
42
\
99
这里,倒数第二个值是最大值的左 child 的最右边的 child 。您的算法将需要更新,以便您检查最大值的父项,或最大值的左子项的最右子项。
另请注意,max 不一定是最右边的叶 节点,它是树右脊柱底部的节点。上面,137 不是一片叶子。
希望这对您有所帮助!
关于algorithm - BST 中的第二个最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11425352/