我们用二叉树的前序遍历来实现所有路径和的查询
public class Solution {
private ArrayList<ArrayList<Integer>> all = new ArrayList<ArrayList<Integer>>();
private ArrayList<Integer> tem = new ArrayList<Integer>();
public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {
if(root == null) return all;
tem.add(root.val);
target -= root.val;
//如果一条路径和为target且为叶节点则为一个合格的路径。
if(target == 0 && root.left == null && root.right == null)
all.add(new ArrayList<Integer>(tem));
FindPath(root.left, target);
FindPath(root.right, target);
//一条路径递归完成后把tem的最后值,即本路径的最后一个节点删掉并返回到父节点,因为整个二叉树的所有路径共用tem
tem.remove(tem.size()-1);
return all;
}
}
通过递归实现二叉树的前序遍历。