leetcode-113. 路径总和 II

class TreeNode {
	int val;
	TreeNode left;
	TreeNode right;

	TreeNode(int x) {
		val = x;
	}
}

class Solution {
	public List<List<Integer>> pathSum(TreeNode root, int sum) {
		List<Integer> temp = new ArrayList<>();
		List<List<Integer>> res = new ArrayList<List<Integer>>();
		dfs(root, 0, temp, res, sum);
		return res;
	}

	public void dfs(TreeNode root, int curSum, List<Integer> temp, List<List<Integer>> res, int sum) {// 求从root到叶子的和
		// 参数1
		if (root == null)
			return;// 不能再继续深入了
		// 我只处理root
		curSum += root.val;
		temp.add(root.val);
		// 找到一解
		if (root.left == null && root.right == null && curSum == sum) {
			res.add(new ArrayList<>(temp));
		}
		dfs(root.left, curSum, temp, res, sum);
		dfs(root.right, curSum, temp, res, sum);
		curSum -= root.val;
		temp.remove(temp.size() - 1);
	}
}

猜你喜欢

转载自blog.csdn.net/qq_39370495/article/details/86646189