Leetcode 671.二叉树中第二小的节点
二叉树中第二小的节点
给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值。
给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。
思路
1 class Solution { 2 int min1; 3 long ans = Long.MAX_VALUE; 4 5 public void dfs(TreeNode root) { 6 if (root != null) { 7 if (min1 < root.val && root.val < ans) { 8 ans = root.val; 9 } else if (min1 == root.val) { 10 dfs(root.left); 11 dfs(root.right); 12 } 13 } 14 } 15 public int findSecondMinimumValue(TreeNode root) { 16 min1 = root.val; 17 dfs(root); 18 return ans < Long.MAX_VALUE ? (int) ans : -1; 19 } 20 }