34. 二叉树中和为某一值的路径(pathSum)
1. python
class Solution:
def __init__(self):
self.ret,self.path=[],[]
def pathSum(self, root: TreeNode, sum: int) -> List[List[int]]:
if not root:
return[]
self.path.append(root.val)
sum = sum - root.val
if sum ==0 and not root.left and not root.right:
self.ret.append(list(self.path))
self.pathSum(root.left,sum)
self.pathSum(root.right,sum)
self.path.pop()
return self.ret
2. Java
class Solution {
LinkedList<List<Integer>> ret = new LinkedList<List<Integer>>();
LinkedList<Integer> path = new LinkedList<Integer>();
public List<List<Integer>> pathSum(TreeNode root, int sum) {
recur(root,sum);
return ret;
}
void recur(TreeNode root,int sum){
if(root == null){
return;
}
path.add(root.val);
sum = sum -root.val;
if (0== sum && root.left== null && root.right==null){
ret.add(new LinkedList(path));
}
recur(root.left,sum);
recur(root.right,sum);
path.removeLast();
}