1、来源:二叉树中和为某一值的路径
来源:牛客网
输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
3、思路:
- 先序遍历的方法,当到达叶子节点时判断是否符合要求;
- 保存路径的过程中,用一条公共的list保存每一条路径(保存到二维数组根据该list new一个来保存),一次递归完成后,记得将使用list.remove(list.size()-1)将当递归的根节点remove。
3、代码:
ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> list = new ArrayList<Integer>();
public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {
if(root == null)
return res;
Integer root_val = root.val;
TreeNode left_node = root.left;
TreeNode right_node = root.right;
list.add(root_val);
target -= root_val;
if(target == 0 && left_node == null && right_node == null){
res.add(new ArrayList<Integer>(list));
}
if(left_node != null)
FindPath(left_node, target);
if(right_node !=null)
FindPath(right_node, target);
list.remove(list.size() - 1);
return res;
}