网站模板如何删除,如何做正规电影网站,校园网站建设的感受论文,wordpress 时间插件给定一个非空特殊的二叉树#xff0c;每个节点都是正数#xff0c;并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话#xff0c;那么该节点的值等于两个子节点中较小的一个。
更正式地说#xff0c;root.val min(root.left.val, root.right.val) 总…给定一个非空特殊的二叉树每个节点都是正数并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话那么该节点的值等于两个子节点中较小的一个。
更正式地说root.val min(root.left.val, root.right.val) 总成立。
给出这样的一个二叉树你需要输出所有节点中的第二小的值。如果第二小的值不存在的话输出 -1 。
示例 1 输入root [2,2,5,null,null,5,7] 输出5 解释最小的值是 2 第二小的值是 5 。
示例 2
输入root [2,2,2] 输出-1 解释最小的值是 2, 但是不存在第二小的值。
解题思路
二叉树的根节点必为最小值因此我们只需要遍历一遍二叉树找出大于根节点的最小值即可
代码
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val val;* this.left left;* this.right right;* }* }*/
class Solution {Integer resnull;public int findSecondMinimumValue(TreeNode root) {dfsFindSecondMinimumValue(root, root.val);return resnull?-1:res;}public void dfsFindSecondMinimumValue(TreeNode root,int tar) {if (rootnull) return;if(root.valtar){resresnull?root.val:Math.min(res, root.val);}dfsFindSecondMinimumValue(root.left,tar);dfsFindSecondMinimumValue(root.right,tar);}
}