zoukankan      html  css  js  c++  java
  • Path Sum

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

    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;
        }
    };
    

      

    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);
        }
    };
    

      

  • 相关阅读:
    redis 初探
    RAID,mdadm(笔记)
    EXT2文件系统
    压缩、解压缩命令(笔记)
    shell编程while
    软连接、硬链接、磁盘分区管理(笔记)
    磁盘管理(笔记)
    恢复Linux下被误删除的文件(笔记)
    Linux下高效数据恢复软件extundelete应用实战
    RedHat安装GCC问题-解决依赖问题
  • 原文地址:https://www.cnblogs.com/zsboy/p/3884073.html
Copyright © 2011-2022 走看看