671. 二叉树中第二小的节点 - 力扣(LeetCode) (leetcode-cn.com)
思想:如果当前节点值大于根节点,返回节点值,孩子不用遍历;否则寻找左右子树中最小值。
class Solution {
public:
int findSecondMinimumValue(TreeNode* root) {
return fun(root,root->val);
}
int fun(TreeNode*root,int val){
if(root==nullptr) return-1;
if(root->val>val) return root->val;
int lv=fun(root->left,val);
int rv=fun(root->right,val);
if(lv!=-1&&rv!=-1) return min(lv,rv);
else return max(lv,rv);
}
};
递归还是理解不够,找不到返回条件。