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


    问题

  • 相关阅读:
    [AGC030F] Permutation and Minimum
    [GYM102904B]Dispatch Money
    [ZOJ3989]Triangulation
    [HDU6094]Rikka with KMatch
    CF739E Gosha is hunting
    [国家集训队]Tree I
    [BZOJ3864]Hero meet devil
    编程是一门实践性的科学
    IE下的flash加载中文URL文件 问题
    多线程1号
  • 原文地址:https://www.cnblogs.com/lightmare/p/10398742.html
Copyright © 2011-2022 走看看