- Each child's val >= parent's val.

When we meet the condition "child's val > parent's val",

we could stop the dfs path from this child.
- There is none negative value, using "unsigned int" to find the minimum val.

```
class Solution {
public:
int findSecondMinimumValue(TreeNode* root) {
if (!root->left) return -1;
unsigned int l, r;
if (root->left->val == root->val)
l = findSecondMinimumValue(root->left);
else
l = root->left->val;
if (root->right->val == root->val)
r = findSecondMinimumValue(root->right);
else
r = root->right->val;
return min(l, r);
}
};
```