zoukankan      html  css  js  c++  java
  • 第34-1题:LeetCode112. Path Sum I

    题目 

    给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。

    说明: 叶子节点是指没有子节点的节点。

    示例: 
    给定如下二叉树,以及目标和 sum = 22

                  5
                 / 
                4   8
               /   / 
              11  13  4
             /        
            7    2      1
    

    返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2。 


    考点

    1.递归

    2.举例子分解问题


    思路

    3种情况

    1.sum=root->val && !root->left &&.!root->right

    2.遍历左子树  hasPathSum(root->left, sum - root->val) 

    3.遍历右子树 hasPathSum(root->right, sum - root->val);

    用||合并。


    代码

    leetcode这题只是要求是不是存在这样的路径,不要求打印,所以不用使用栈。

    执行用时为 8 ms 的范例 

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

    3个情况合并 

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


    问题

  • 相关阅读:
    短信平台README.MD
    电子保单README.MD
    数据结构和算法(二)
    学习java数据结构和算法笔记(一)
    删除SVN信息
    工作中比较经常用到的命令
    Eclipse不正常关闭后,解决闪退问题
    文字接口数据捕获tcpdump
    Swagger2和springMVC整合测试
    SpringMybatis 整合JavaWeb
  • 原文地址:https://www.cnblogs.com/lightmare/p/10398742.html
Copyright © 2011-2022 走看看