algorithm - BST 中的第二个最大值

标签 algorithm data-structures language-agnostic binary-search-tree

这是一道面试题。找到 BST 中的第二个最大值。

最大元素是 BST 中最右边的叶子。第二个最大值要么是它的 parent ,要么是它的左 child 。所以解决方案是遍历BST,找到最右边的叶子,并检查它的父节点和左子节点。

有意义吗?

最佳答案

不,那是错误的。考虑这个 BST:

        137
       /
      42
       \
        99

这里,倒数第二个值是最大值的左 child 的最右边的 child 。您的算法将需要更新,以便您检查最大值的父项,或最大值的左子项的最右子项。

另请注意,max 不一定是最右边的 节点,它是树右脊柱底部的节点。上面,137 不是一片叶子。

希望这对您有所帮助!

关于algorithm - BST 中的第二个最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11425352/

相关文章:

algorithm - 由多个圆组成的相交区域数

arrays - Lua的混合数组和哈希表;它存在于其他任何地方吗?

unit-testing - 用于简单对象验证的基于属性的测试

algorithm - 具有最少链数的有向图

algorithm - 具有平行边和自循环的 Dijkstra

algorithm - 非常大的排列列表

c++ - 平方根算法 C++

sql - PL/SQL表类型的列名

java - 数据结构中数据的有效表示

language-agnostic - 干还是不干?关于避免代码重复和保持内聚