zoukankan      html  css  js  c++  java
  • [LeetCode]Path Sum

    Path Sum

    Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.

    For example:
    Given the below binary tree and sum = 22,
                  5
                 / 
                4   8
               /   / 
              11  13  4
             /        
            7    2      1
    

    return true, as there exist a root-to-leaf path 5->4->11->2 which sum is 22.

    递归深搜,一类题。解法和Sum Root to Leaf Numbers一样。

     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     void dfs(TreeNode* root,int sum,int add,bool& has)
    13     {
    14         add+=root->val;
    15         if(root->left==NULL && root->right==NULL)
    16         {
    17             if(add==sum)
    18             {
    19                 has=true;
    20                 return;
    21             }
    22         }
    23         if(root->left) dfs(root->left,sum,add,has);
    24         if(root->right) dfs(root->right,sum,add,has);
    25         
    26     }
    27     bool hasPathSum(TreeNode* root, int sum) {
    28         if(!root) return false;
    29         int add=0;
    30         bool result=false;
    31         dfs(root,sum,add,result);
    32         return result;
    33     }
    34 };
  • 相关阅读:
    [SHOI2008]堵塞的交通
    [SHOI2008]汉诺塔
    [JSOI2008]最小生成树计数
    [JSOI2008]球形空间产生器
    [HNOI2014]画框
    HDU 2255 奔小康赚大钱
    [SDOI2017]新生舞会
    [BZOJ2285][SDOI2011]保密
    [BZOJ3232]圈地游戏
    [HDU5909]Tree Cutting
  • 原文地址:https://www.cnblogs.com/Sean-le/p/4814939.html
Copyright © 2011-2022 走看看