← 返回目录

算法笔试模拟题精解之“找出二叉搜索树的第2 大的数”

第 52 / 74 卷日期:

算法笔试模拟题精解之“找出二叉搜索树的第 2 大的数”

贡献者 | 黄信旭

简介:这是一个关于二叉搜索树的知识点。对于二叉搜索树,若它的左子树不

空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树

上所有结点的值均大于它的根结点的值。

题目描述

等级:容易

知识点:树

查看题目:找出二叉搜索树的第 2 大的数

给定一个二叉搜索树,找出其第二大的数。

示例 1

比如二叉搜索树如下

图 135-1
图 135-1

那么第二大的值是 25

注意

对于二叉搜索树,若它的左子树不空,则左子树上所有结点的值均小于它的根结

点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值

解题思路

这是一个关于二叉搜索树的知识点。

对于二叉搜索树,若它的左子树不空,则左子树上所有结点的值均小于它的根结

点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值。

因为题中没有说这是一棵平衡的树,所以某些节点可能只有一棵子树。

对于树中最大的数是很容易找到的,一直选择右子树直到右子树为空就可以了。

对于第 2 大的数,存在两种情况。一种是最大数的节点存在左子树,一种是不存

在左子树。

图 136-1
图 136-1

第一种情况下。根据二叉搜索树的性质,可以知道 25 的左子树中的所有值都比

25 小,也都比 25 的父节点(20)大。所以第二大的数应该出现在 25 的左子树中。

寻找 25 左子树中的最大值即可。

图 137-1
图 137-1

第二种情况下。第二大的数就是最大数节点(60)的父节点(25). 因为 25 的父

节点和左子树都比 25 小。而右子树中只有最大数一个值。

对于特殊情况,根节点没有右子树。可以归类到情况 1 中,根节点为最大的树。

如果也没有左子树的话,那就是样例有问题了,因为这样树中只有一个数。

时间复杂度 O(n) 因为树不是平衡的,所以最差的情况下,从根节点开始都只有

右子树,需要完整遍历整棵树。

空间复杂度 O(1) 只需要保存当前遍历到的节点即可。

看完之后是不是有了想法了呢,快来练练手吧 >> 查看题目:找出二叉搜索树的

第 2 大的数

全站分卷索引 · 74 卷
  1. 1一、算法思想
  2. 2算法笔试模拟题精解之“打怪兽”
  3. 31.2 贪心
  4. 4算法笔试模拟题精解之“最强的团队”
  5. 5算法笔试模拟题精解之“Tom 爱吃巧克力”
  6. 6算法笔试模拟题精解之“吃奶酪”
  7. 7算法笔试模拟题精解之“一的个数”
  8. 8算法笔试模拟题精解之“Bob 的花束”
  9. 9算法笔试模拟题精解之“钱庄”
  10. 10算法笔试模拟题精解之“移动射击”
  11. 11算法笔试模拟题精解之“相似数组”
  12. 12算法笔试模拟题精解之“过吊桥”
  13. 13算法笔试模拟题精解之“完美排列”
  14. 14算法笔试模拟题精解之“采摘圣诞果”
  15. 15算法比赛模拟题精解之“Tairitsu and Dynamic Objects”
  16. 16算法笔试模拟题精解之“Codancer 的炸弹引爆”
  17. 17算法笔试模拟题精解之“学习小组”
  18. 18算法笔试模拟题精解之“恢复字符串”
  19. 191.3 DP/ 动态规划
  20. 20算法笔试模拟题精解之“寻找等比数列”
  21. 21算法笔试模拟题精解之“字符配对”
  22. 22算法笔试模拟题精解之“数组染色”
  23. 23算法笔试模拟题精解之“连绵的群山”
  24. 24算法笔试模拟题精解之“难住Tom 的问题”
  25. 25算法笔试模拟题精解之“变化的字符”
  26. 26算法笔试模拟题精解之“跳房子”
  27. 27算法笔试模拟题精解之“寒假活动”
  28. 28算法笔试模拟题精解之“最短路”
  29. 29算法笔试模拟题精解之“codancer 上楼”
  30. 30算法笔试模拟题精解之“木棒拼接”
  31. 31算法笔试模拟题精解之“Codancer 的数组封印”
  32. 32算法笔试模拟题精解之“Jerry 的异或运算”
  33. 33算法笔试模拟题精解之“小明的数学作业”
  34. 34算法笔试模拟题精解之“奇偶数列”
  35. 351.4 剪枝
  36. 361.5 尺取法
  37. 37算法笔试模拟题精解之“调整数组”
  38. 38算法笔试模拟题精解之“最优分组”
  39. 39算法笔试模拟题精解之“破译密码”
  40. 40二、数据结构
  41. 412.2 搜索
  42. 42算法笔试模拟题精解之“能量半径”
  43. 43算法笔试模拟题精解之“苹果收获程序”
  44. 44算法笔试模拟题精解之“恐怖的辐射”
  45. 45算法笔试模拟题精解之“树的拆分”
  46. 46算法笔试模拟题精解之“Password”
  47. 47算法笔试模拟题精解之“神奇数字在哪里”
  48. 48算法笔试模拟题精解之“神奇的棋子”
  49. 492.3 树
  50. 50算法笔试模拟题精解之“Codancer 的旅行”
  51. 51算法笔试模拟题精解之“Codancer 的求和”
  52. 52算法笔试模拟题精解之“找出二叉搜索树的第2 大的数”
  53. 532.4 线型
  54. 54算法笔试模拟题精解之“最活跃的数”
  55. 55算法笔试模拟题精解之“非递减序列”
  56. 56算法笔试模拟题精解之“Tom 跳方格”
  57. 57算法笔试模拟题精解之“复杂的字符串”
  58. 58算法笔试模拟题精解之“神秘消失”
  59. 59三、计算
  60. 60算法笔试模拟题精解之“简单题?
  61. 61算法笔试模拟题精解之“朋友一生一起走”
  62. 62算法笔试模拟题精解之“正三角塔”
  63. 63算法笔试模拟题精解之“组队难题”
  64. 64算法笔试模拟题精解之“2n 合体”
  65. 65算法笔试模拟题精解之“平行线”
  66. 66算法笔试模拟题精解之“叠叠高”
  67. 67算法笔试模拟题精解之“公平”
  68. 68算法笔试模拟题精解之“Tom 的手工课”
  69. 69算法笔试模拟题精解之“填数问题”
  70. 70算法笔试模拟题精解之“Jerry 的考验”
  71. 71算法笔试模拟题精解之“超车”
  72. 72算法笔试模拟题精解之“坏掉的时钟”
  73. 73算法笔试模拟题精解之“期末考试”
  74. 74算法笔试模拟题精解之“滑雪比赛”