Leetcode 437.路径总和III

路径总和III

给定一个二叉树,它的每个结点都存放着一个整数值。

找出路径和等于给定数值的路径总数。

路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。

二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。

示例:

root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8

 

 

返回 3。和等于 8 的路径有:

 

1. 5 -> 3

2. 5 -> 2 -> 1

3. -3 -> 11

 1 /**
 2  * Definition for a binary tree node.
 3  * public class TreeNode {
 4  *     int val;
 5  *     TreeNode left;
 6  *     TreeNode right;
 7  *     TreeNode(int x) { val = x; }
 8  * }
 9  */
10 public class Solution {
11     public int pathSum(TreeNode root, int sum) {
12         if(root == null) return 0;
13         return dfs(root, sum)+pathSum(root.left, sum)+pathSum(root.right, sum);
14     }
15     private int dfs(TreeNode root, int sum){
16         int res = 0;
17         if(root == null) return res;
18         if(sum == root.val)
19             res++;
20         res+=dfs(root.left,sum - root.val);
21         res+=dfs(root.right,sum - root.val);
22         return res;
23     }
24 }

 

 

posted on 2019-01-15 00:36  kexinxin  阅读(97)  评论(0编辑  收藏  举报

导航