示例 1:
示例 2:
class Solution {public int dfs(TreeNode root,int minVal){if(root == null){return -1;}if(root.val > minVal){return root.val;}int left = dfs(root.left,minVal);int right = dfs(root.right,minVal);if(left >= 0 && right >= 0){return Math.min(left,right);}return Math.max(left,right);}public int findSecondMinimumValue(TreeNode root) {return dfs(root,root.val);}
}
int dfs(struct TreeNode* root,int minVal)
{if(root == NULL){return -1;}if(root->val > minVal){return root->val;}int left = dfs(root->left,minVal);int right = dfs(root->right,minVal);if(left >= 0 && right >= 0){return fmin(left,right);}return fmax(left,right);
}int findSecondMinimumValue(struct TreeNode* root)
{return dfs(root,root->val);
}
class Solution:def findSecondMinimumValue(self, root: Optional[TreeNode]) -> int:def dfs(root,minVal):if root is None:return -1if root.val > minVal:return root.valleft = dfs(root.left,minVal)right = dfs(root.right,minVal)if left >= 0 and right >= 0:return min(left,right)return max(left,right)return dfs(root,root.val)
class Solution {
public:int dfs(TreeNode* root,int minVal){if(root == nullptr){return -1;}if(root->val > minVal){return root->val;}int left = dfs(root->left,minVal);int right = dfs(root->right,minVal);if(left >= 0 && right >= 0){return min(left,right);}return max(left,right);}int findSecondMinimumValue(TreeNode* root) {return dfs(root,root->val);}
};
Java语言版
C语言版
Python语言版
C++语言版