NC9题解 | #二叉树中和为某一值的路径(二)#
二叉树中和为某一值的路径(一)
http://www.nowcoder.com/practice/508378c0823c423baa723ce448cbfd0c
类似于NC8
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* }
*/
public class Solution {
/**
*
* @param root TreeNode类
* @param sum int整型
* @return bool布尔型
*/
ArrayList<ArrayList<Integer>> ll = new ArrayList<ArrayList<Integer>>();
public boolean hasPathSum (TreeNode root, int sum) {
// write code here
ArrayList<Integer> path = new ArrayList();
rec(root,path,sum);
if(ll.size()>0){
return true;
}else{
return false;
}
}
public void rec(TreeNode root, ArrayList<Integer> path, int expectNumber){
if(root == null){
return;
}
ArrayList<Integer> newPath = new ArrayList(path);
newPath.add(root.val);
if(root.left != null){
rec(root.left, newPath, expectNumber - root.val);
}
if(root.right != null){
rec(root.right, newPath, expectNumber - root.val);
}
if(root.left == null && root.right == null){
if(root.val == expectNumber){
ll.add(newPath);
System.out.println(Arrays.toString(ll.toArray()));
}
}
}
}
