zoukankan      html  css  js  c++  java
  • Path Sum <leetcode>

    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.

    这道题也很简单,其实就是遍历(这里用的前序,用递归实现的),把每个节点求和,到叶子节点时看是不是满足条件,如果不满足继续遍历,都没有就返回false,

    但是一开始理解错了,想当然的以为如果左右节点有一个NULL就算一条路径,真是低级的错误,左右子节点都是NULL时才算一条路径

    代码如下:

     1 /**
     2  * Definition for binary tree
     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     bool hasPathSum(TreeNode *root, int sum) {
    13         if(root==NULL) return false;
    14         return doit(root,sum);
    15     }
    16     
    17     bool doit(TreeNode* &root,int sum)
    18     {
    if
    19 if(NULL==root->left&&NULL==root->right) 20 { 21 if(0==sum-root->val) return true; 22 else return false; 23 } 24 else 25 { 26 if(NULL!=root->left) 27 { 28 if(!doit(root->left,sum-root->val)) 29 { 30 if(NULL!=root->right) 31 { 32 return doit(root->right,sum-root->val); 33 } 34 else return false; 35 } 36 return true; 37 } 38 else if(NULL!=root->right) 39 { 40 return doit(root->right,sum-root->val); 41 } 42 } 43 } 44 };
  • 相关阅读:
    HTML与css语法笔记
    HTML标记含义
    HTML-入门篇day01
    计算器
    九宫格
    5.28第十三周
    5.21 不用交得作业及答案
    5.22 上交作业
    5.15作业
    5.7作业
  • 原文地址:https://www.cnblogs.com/sqxw/p/3962212.html
Copyright © 2011-2022 走看看