二叉树中第二小的节点
力扣 671. 二叉树中第二小的节点
题目说明
给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为
2或0。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。更正式地说,
root.val = min(root.left.val, root.right.val)总成立。给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。
提示:
- 树中节点数目在范围
[1, 25]内 1 <= Node.val <= 2^31 - 1- 对于树中每个节点
root.val == min(root.left.val, root.right.val)
- 树中节点数目在范围
示例
示例 1:
1 | 输入:root = [2,2,5,null,null,5,7] |
示例 2:
1 | 输入:root = [2,2,2] |
笔者理解
此题是一道二叉树算法问题,在力扣题库中被定义为简单题。
解法
当笔者阅读完此题后,笔者采用了DFS和TreeSet的方式,虽然不是比较高效的方法,但是旨在学习这两种方法或工具类,让我们来看看具体如何实现的吧。
实现
1 | /** |
时间效率一般,空间效率都还行,可见此解法还比较适合此题;
总结
本题是今天的每日一题,难度是为简单,感兴趣的朋友都可以去尝试一下,此题还有其他更多的解法,朋友们可以自己逐一尝试。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 徐年の博客!









