Path Sum II (Java)
2014-12-30 15:16
323 查看
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
return
Source
List<List<Integer>> path = new ArrayList<List<Integer>>();
List<Integer> s = new ArrayList<Integer>();
public List<List<Integer>> pathSum(TreeNode root, int sum) {
if(root == null) return path;
int cur = root.val;
s.add(root.val);
DFS(root, cur, sum);
return path;
}
public void DFS(TreeNode root, int cur, int sum){
if(root.left == null && root.right == null){
if(sum == cur){
path.add(new ArrayList<Integer>(s)); //注意添加的方法,如果不加new ArrayList s变path也跟着变
}
return ;
}
if(root.left != null){
s.add(root.left.val);
DFS(root.left, cur + root.left.val, sum);
s.remove(s.size() - 1);
}
if(root.right != null){
s.add(root.right.val);
DFS(root.right, cur + root.right.val, sum);
s.remove(s.size() - 1); //.remove(要删除的元素的位置)
}
}
Test
public static void main(String[] args){
TreeNode a = new TreeNode(5);
a.left = new TreeNode(4);
a.right = new TreeNode(8);
a.left.left = new TreeNode(11);
a.left.left.left = new TreeNode(7);
a.left.left.right = new TreeNode(2);
a.right.left = new TreeNode(13);
a.right.right = new TreeNode(4);
a.right.right.left = new TreeNode(5);
a.right.right.right = new TreeNode(1);
System.out.println(new Solution().pathSum(a, 22));
}
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] ]
Source
List<List<Integer>> path = new ArrayList<List<Integer>>();
List<Integer> s = new ArrayList<Integer>();
public List<List<Integer>> pathSum(TreeNode root, int sum) {
if(root == null) return path;
int cur = root.val;
s.add(root.val);
DFS(root, cur, sum);
return path;
}
public void DFS(TreeNode root, int cur, int sum){
if(root.left == null && root.right == null){
if(sum == cur){
path.add(new ArrayList<Integer>(s)); //注意添加的方法,如果不加new ArrayList s变path也跟着变
}
return ;
}
if(root.left != null){
s.add(root.left.val);
DFS(root.left, cur + root.left.val, sum);
s.remove(s.size() - 1);
}
if(root.right != null){
s.add(root.right.val);
DFS(root.right, cur + root.right.val, sum);
s.remove(s.size() - 1); //.remove(要删除的元素的位置)
}
}
Test
public static void main(String[] args){
TreeNode a = new TreeNode(5);
a.left = new TreeNode(4);
a.right = new TreeNode(8);
a.left.left = new TreeNode(11);
a.left.left.left = new TreeNode(7);
a.left.left.right = new TreeNode(2);
a.right.left = new TreeNode(13);
a.right.right = new TreeNode(4);
a.right.right.left = new TreeNode(5);
a.right.right.right = new TreeNode(1);
System.out.println(new Solution().pathSum(a, 22));
}
相关文章推荐
- LeetCode Path Sum II in Java
- [leetcode-113]Path Sum II(java)
- [Leetcode][JAVA] Path Sum I && II
- LeetCode详解 之 Path Sum I and II(Java)
- leetcode:Path Sum II 【Java】
- Path Sum II Java
- [LeetCode][Java] Path Sum II
- 【leetcode】113. Path Sum II【java】
- LeetCode 113. Path Sum II(java)
- 【LeetCode】113. Path Sum II 基于Java和C++的解法及分析
- 【LeetCode-面试算法经典-Java实现】【113-Path Sum II(路径和)】
- Java for LeetCode 113 Path Sum II
- Path Sum II leetcode java
- [Leetcode] Path Sum II (Java)
- Path Sum II
- [leetcode]Path Sum II
- functionclass[LeetCode]Path Sum II
- [leetcode]Path Sum II
- [Leetcode]Path Sum II
- leetcode: Path Sum II