zoukankan      html  css  js  c++  java
  • [刷题] 437 Paths Sum III

    要求

    • 给出一棵二叉树及一个数字sum,判断这棵二叉树上存在多少条路径,其路径上的所有节点和为sum
    • 路径不一定始于根节点,终止于叶子节点
    • 路径要一直向下

    思路

    • 分情况讨论:根节点在路径上(8) / 根节点不在路径上(9-10)
    • 递归嵌套递归

    实现

     1 class Solution {
     2 public:
     3     int pathSum(TreeNode* root, int sum) {
     4         
     5         if( root == NULL )
     6             return 0;
     7         
     8         int res = findPath( root , sum );
     9         res += pathSum( root->left , sum );
    10         res += pathSum( root->right , sum );
    11         
    12         return res;
    13     }
    14     
    15 private:
    16     // 根节点在路径上 
    17     int findPath( TreeNode* node, int num ){
    18         
    19         if( node == NULL )
    20             return 0;
    21         
    22         int res = 0;
    23         if( node->val == num )
    24             res += 1;
    25         
    26         res += findPath( node->left , num - node->val );
    27         res += findPath( node->right , num - node->val );
    28         
    29         return res;
    30         
    31     }
    32 };
    View Code
  • 相关阅读:
    python工具类 md5
    python 线程池, 进程池
    scrapydweb 安装部署
    python 协程
    jquery
    scrapyd 设置访问密码
    pat 乙级1033 旧键盘打字(20)
    1459 迷宫游戏(51NOD)
    python之禅
    Jzzhu and Cities ----CodeForces
  • 原文地址:https://www.cnblogs.com/cxc1357/p/12683990.html
Copyright © 2011-2022 走看看