题目描述
二叉树的后序遍历,先找到符合条件的叶子节点,加入到集合中,然后再将根节点加入到左右集合中,再将左右集合放入新集合中。
java 代码
class Solution {
public List<List<Integer>> findPath(TreeNode root, int sum) {
List<List<Integer>> ans = new ArrayList<>();
if(root == null) return ans;
if(root.val == sum && root.left == null && root.right == null){
List<Integer> tmp = new ArrayList<>();
tmp.add(root.val);
ans.add(tmp);
return ans;
}
List<List<Integer>> left = findPath(root.left,sum - root.val);
List<List<Integer>> right = findPath(root.right,sum - root.val);
for(List<Integer> l : left){
l.add(0,root.val);
ans.add(l);
}
for(List<Integer> r : right){
r.add(0,root.val);
ans.add(r);
}
return ans;
}
}