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 }

原文地址:https://www.cnblogs.com/kexinxin/p/10394953.html