/**[][]
2 0
-1
1:
:
2
/ \
2 5
/ \
5 7
: 5
: 2 5
2:
:
2
/ \
2 2
: -1
: 2,
*/
/*
1
*/
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int findSecondMinimumValue(TreeNode root) {
if (root == null || root.left == null) return -1;
int secondMin;
int leftMin;
int rightMin;
//
if(root.val == root.left.val && root.val == root.right.val){
leftMin = findSecondMinimumValue(root.left);
rightMin = findSecondMinimumValue(root.right);
}else if(root.val == root.left.val){
leftMin = findSecondMinimumValue(root.left);
rightMin = root.right.val;
}else if(root.val == root.right.val){
leftMin = root.left.val;
rightMin = findSecondMinimumValue(root.right);
}else{
leftMin = root.left.val;
rightMin = root.right.val;
}
//
if(leftMin == -1 && rightMin == -1){
return -1;
}else if(leftMin == -1){
return rightMin;
}else if(rightMin == -1){
return leftMin;
}else{
return leftMin < rightMin ? leftMin : rightMin;
}
}
}