zoukankan      html  css  js  c++  java
  • 437. Path Sum III

    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.
    
    Example:
    
    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

    从任意一点dfs, 和dfs return 当前, 左节点, 右节点的模板

    The basic idea is to subtract the value of current node from sum until  the subtraction equals 0, then we know that we got a path. and because the start node can be any node, so we should add the return value from its subtree. /**

     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    public class Solution {
        public int pathSum(TreeNode root, int sum) {
            if(root==null) return 0;
            //helper(root,sum) 当前节点开始
            //pathSum(root.left,sum) 当前节点左节点开始
            //pathSum(root.right,sum) 当前节点右节点开始
            return helper(root,sum)+pathSum(root.left,sum)+pathSum(root.right,sum);
           
        }
        private int helper(TreeNode root,int sum){
           if(root==null) return 0;
           int count=0;
           if(root.val==sum) count++;
           return count+helper(root.left,sum-root.val)+helper(root.right,sum-root.val);
        }
    
    }
    

    要学会从任意节点遍历+ 分治法(后序遍历)

    当前节点是否满足题意加上左子树和右子树的结果值
    return count+helper(root.left,sum-root.val)+helper(root.right,sum-root.val);

      

  • 相关阅读:
    windows,linux,esxi系统判断当前主机是物理机还是虚拟机?查询主机序列号命令 风行天下
    zabbix监控网络的出入口流量 风行天下
    python 编写远程连接服务器脚本 风行天下
    zabbix 监控windows端cpu使用率百分比 风行天下
    linux计划任务crontab的使用 风行天下
    cd
    rm
    cp
    Windows XP和Windows 7双系统安装和启动菜单修复
    MapInfo、ArcGIS 狙击战 1
  • 原文地址:https://www.cnblogs.com/apanda009/p/7233620.html
Copyright © 2011-2022 走看看