LeetCode 671
2020.8.17
我的通过代码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
int ansFirst = 0;
int ansSecond = 0;
public int findSecondMinimumValue(TreeNode root) {
ansFirst = root.val;
if(root.left!=null&&root.right!=null) {
ansSecond = Math.max(root.left.val,root.right.val);
}
if(root.left==null||root.right==null||ansSecond==ansFirst) return -1;
traverse(root);
return ansSecond;
}
void traverse(TreeNode root) {
if(root==null) return;
if(ansFirst>root.val) {
ansSecond = ansFirst;
ansFirst = root.val;
} else if(ansSecond>root.val&&root.val!=ansFirst) {
ansSecond = root.val;
}
traverse(root.left);
traverse(root.right);
}
}
终于,我控制住了自己的暴力想法,没有用集合遍历再排序。
用全局变量记录,进行递归即可。
此题树的性质比较特殊,需要仔细思考判断条件。