二叉树中和为某一值的路径

  • 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的全部路径。路径定义为从树的根结点开始往下一直到叶结点所通过的结点造成一条路径。
public class Solution {
	public ArrayList<ArrayList<Integer>> FindPath(TreeNode root, int target) {
		ArrayList<Integer> list = new ArrayList<Integer>();
		ArrayList<ArrayList<Integer>> ret = new ArrayList<ArrayList<Integer>>();
		dfs(list, ret, root, target);
		return ret;
	}

	public void dfs(ArrayList<Integer> list, ArrayList<ArrayList<Integer>> ret,
			TreeNode root, int target) {
		if(root == null) return;
		list.add(root.val);
		if (target == root.val && list.size() != 0 && root.left == null && root.right == null){
			ret.add((ArrayList<Integer>) list.clone());
		}
		target -= root.val;
		dfs(list, ret, root.left, target);
		dfs(list, ret, root.right, target);
		target += root.val;
		list.remove(list.size() - 1);
	}
}
相关文章
相关标签/搜索