求和路径
给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下(只能从父节点指向子节点方向)。
遍历二叉树的节点当作根节点查找路径
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
private int ans = 0;
public int pathSum(TreeNode root, int sum) {
if (root == null){
return 0;
}
path(root, sum);
pathSum(root.left, sum);
pathSum(root.right, sum);
return ans;
}
public void path(TreeNode root, int sum){
if (root == null){
return;
}
sum -= root.val;
if (sum == 0){
++ans;
}
path(root.left, sum);
path(root.right, sum);
}
}