关闭

LeetCode Path Sum II

标签: javaleetcodeDFS
153人阅读 评论(0) 收藏 举报
分类:

Description:

Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.

For example:
Given the below binary tree and sum = 22,
              5
             / \
            4   8
           /   / \
          11  13  4
         /  \    / \
        7    2  5   1

return

[
   [5,4,11,2],
   [5,8,4,5]
]

Solution:

还是一样的DFS。

和Path Sum相比,有一个细节:DFS的每个层次递归的条件有所不同。

import java.util.*;

public class Solution {
	int targetSum;
	List<List<Integer>> list = new ArrayList<List<Integer>>();

	public List<List<Integer>> pathSum(TreeNode root, int sum) {
		if (root == null)
			return list;
		this.targetSum = sum;
		ArrayList<Integer> array = new ArrayList<Integer>();
		array.add(root.val);
		dfs(root, root.val, array);
		return list;
	}

	void dfs(TreeNode root, int tempSum, ArrayList<Integer> array) {
		if (root.left == null && root.right == null) {
			if (tempSum == targetSum)
				list.add(new ArrayList<Integer>(array));
		}
		if (root.left != null) {
			array.add(root.left.val);
			dfs(root.left, tempSum + root.left.val, array);
			array.remove(array.size() - 1);
		}
		if (root.right != null) {
			array.add(root.right.val);
			dfs(root.right, tempSum + root.right.val, array);
			array.remove(array.size() - 1);
		}
	}
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:67232次
    • 积分:3299
    • 等级:
    • 排名:第10607名
    • 原创:288篇
    • 转载:0篇
    • 译文:0篇
    • 评论:4条
    最新评论