zoukankan      html  css  js  c++  java
  • 【easy-】437. Path Sum III 二叉树任意起始区间和

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        int pathSum(TreeNode* root, int sum) {
            if (root == NULL)
                return 0;
            return Sum(root, 0, sum) + pathSum(root->left, sum) + pathSum(root->right, sum);
        }
    private:
        //pre为前面节点的和,cur为前面加上现在遍历到的节点;
        int Sum(TreeNode* root, int pre, int sum){
            if (root == NULL)
                return 0;
            int cur = pre + root->val;
    
            return (cur == sum) + Sum(root->left, cur, sum) + Sum(root->right, cur, sum);
        }
    };
    root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8
    
          10
         /  
        5   -3
       /     
      3   2   11
     /    
    3  -2   1
    
    Return 3. The paths that sum to 8 are:
    
    1.  5 -> 3
    2.  5 -> 2 -> 1
    3. -3 -> 11

    You are given a binary tree in which each node contains an integer value.

    Find the number of paths that sum to a given value.

    The path does not need to start or end at the root or a leaf, but it must go downwards (traveling only from parent nodes to child nodes).

    The tree has no more than 1,000 nodes and the values are in the range -1,000,000 to 1,000,000.

  • 相关阅读:
    Mayan游戏
    选择客栈
    Redundant Paths
    中心选址
    辗转相除
    字符串
    线段覆盖
    配置魔药
    宝库通道
    教官的监视
  • 原文地址:https://www.cnblogs.com/sherry-yang/p/8452132.html
Copyright © 2011-2022 走看看