LeetCode 113 Path Sum II (DFS)

503人阅读 评论(0)

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]
]


/**
* Definition for a binary tree node.
* public class TreeNode {
*     int val;
*     TreeNode left;
*     TreeNode right;
*     TreeNode(int x) { val = x; }
* }
*/
public class Solution {

public void DFS(int curSum, int sum, TreeNode root, List<Integer> cur, List<List<Integer>> ans) {
if(root == null) {
return;
}
if(root != null && (root.left == null && root.right == null)) {
if(curSum + root.val == sum) {
cur.remove(cur.size() - 1);
}
return;
}
DFS(curSum + root.val, sum, root.left, cur, ans);
DFS(curSum + root.val, sum, root.right, cur, ans);
cur.remove(cur.size() - 1);
}

public List<List<Integer>> pathSum(TreeNode root, int sum) {
List<List<Integer>> ans = new ArrayList<>();
List<Integer> cur = new ArrayList<>();
DFS(0, sum, root, cur, ans);
return ans;
}
}

个人资料
等级：
访问量： 76万+
积分： 1万+
排名： 867
博客专栏
 算法题 文章：51篇 阅读：35387 Java学习笔记 文章：10篇 阅读：12104 LeetCode 文章：138篇 阅读：80350