前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Path Sum

Path Sum

作者头像
用户1624346
发布2018-04-17 16:31:19
1.3K0
发布2018-04-17 16:31:19
举报
文章被收录于专栏:calmound

问:二叉树是否存在路径和等于sum的路径,若存在输出true,否则输出false 分析:递归调用二叉树,每次将上一层的val值传递给子结点并加上子节点的val,当传递到某个结点为叶子结点时,判断其val值是否等于sum 错点:二叉树为空,则无论sum为多少都为false,这个容易造成RE         二叉树只有根节点,则直接判断其值与sum的关系

代码语言:javascript
复制
class Solution
{
public:
    void PathSum(TreeNode *root,int val,int sum,int &flag)
    {
        root->val+=val;
        if(root->left==NULL && root->right==NULL && sum==root->val)
        {
            flag=1;
        }
        if(root->left) PathSum(root->left,root->val,sum,flag);
        if(root->right) PathSum(root->right,root->val,sum,flag);
    }
    bool hasPathSum(TreeNode *root, int sum)
    {
        if(root==NULL)
        {
            return false;
        }
        if(root->left==NULL && root->right==NULL)
        {
            if(root->val==sum) return true;
            return false;
        }
        int flag=0;
        if(root->left)  PathSum(root->left,root->val,sum,flag);
        if(root->right) PathSum(root->right,root->val,sum,flag);
        if(flag) return true;
        return false;
    }
};
代码语言:javascript
复制
class Solution
{
public:
    bool PathSum(TreeNode *root,int sum,int val)
    {
         if(root==NULL)  return false;
         val+=root->val;
         if(root->left==NULL && root->right==NULL)
         {
             if(sum==val) return true;
             return false;
         }
         return PathSum(root->left,sum,val) || PathSum(root->right,sum,val);

    }
    bool hasPathSum(TreeNode *root, int sum)
    {
       return PathSum(root,sum,0);
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014-08-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档