又有leetcode题目来请教了# JobHunting - 待字闺中
c*r
1 楼
题目是path sum||
过了小测试。但是没有过大测试。 fail的testcase 是一个堆非常复杂的+/-1 的树。
下面是我的code。 麻烦大家来抠一下吧。
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public ArrayList> pathSum(TreeNode root, int sum) {
ArrayList> paths = new ArrayList Integer>>();
pathSum_r(root, sum, new ArrayList(), paths);
return paths;
}
private void pathSum_r(TreeNode root, int sum, ArrayList path,
ArrayList> paths){
if(root == null) return;
if(root.left == null && root.right == null){
if(root.val == sum){
path.add(root.val);
paths.add(path);
}else return;
}else{
if(root.left != null){
ArrayList left_path = new ArrayList();
left_path.addAll(path);
left_path.add(root.val);
pathSum_r(root.left, sum-root.val, left_path, paths);
}
if(root.right != null){
ArrayList right_path = new ArrayList();
right_path.addAll(path);
right_path.add(root.val);
pathSum_r(root.right, sum-root.val, right_path, paths);
}
}
}
}
过了小测试。但是没有过大测试。 fail的testcase 是一个堆非常复杂的+/-1 的树。
下面是我的code。 麻烦大家来抠一下吧。
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public ArrayList
ArrayList
pathSum_r(root, sum, new ArrayList
return paths;
}
private void pathSum_r(TreeNode root, int sum, ArrayList
ArrayList
if(root == null) return;
if(root.left == null && root.right == null){
if(root.val == sum){
path.add(root.val);
paths.add(path);
}else return;
}else{
if(root.left != null){
ArrayList
left_path.addAll(path);
left_path.add(root.val);
pathSum_r(root.left, sum-root.val, left_path, paths);
}
if(root.right != null){
ArrayList
right_path.addAll(path);
right_path.add(root.val);
pathSum_r(root.right, sum-root.val, right_path, paths);
}
}
}
}