leetcode之二叉树遍历求和巧妙递归 - Go语言中文社区

leetcode之二叉树遍历求和巧妙递归


和之前那个题一样,递归写的不够巧妙,这里巧妙用了和减值:

贴上自己的:

class Solution {
public:
    bool hasPathSum(TreeNode *root, int sum) {
        if(!root)
            return false;
        bool result=false;
        dfs(root,0,sum,result);
        return result;
    }
    void dfs(TreeNode *root,int res,int sum,bool &result){
        if(result==true)
            return;
        res+=root->val;
        if(!root->left&&!root->right&&res==sum)
        {
            result=true;
            return;
        }
        if(root->left)
            dfs(root->left,res,sum,result);
        if(root->right)
            dfs(root->right,res,sum,result);
    }
};
巧妙递归:

class Solution {
public:
    bool hasPathSum(TreeNode *root, int sum) {
        if(!root)
            return false;
        if(!root->left&&!root->right){
            return sum==root->val;
        }
        return (hasPathSum(root->left,sum-root->val)||
                hasPathSum(root->right,sum-root->val));
    }
};



版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/ONE_PIECE_HMH/article/details/52525129
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2023-01-02 13:27:05
  • 阅读 ( 280 )
  • 分类:算法

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢