Find all k-sum paths in a binary tree

Clash Royale CLAN TAG#URR8PPP
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty margin-bottom:0;
up vote
2
down vote
favorite
Description:
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
Note: A leaf is a node with no children.
Leetcode
Code:
class Solution
private List<List<Integer>> paths = new ArrayList<>();
public List<List<Integer>> pathSum(TreeNode root, int sum)
traverse(root, sum, new ArrayList<Integer>());
return paths;
private void traverse(TreeNode root, int sum, ArrayList<Integer> path)
if (root != null)
path.add(root.val);
if (root.left == null && root.right == null && sum == root.val)
paths.add((ArrayList) path.clone());
traverse(root.left, sum - root.val, path);
traverse(root.right, sum - root.val, path);
path.remove(path.size() - 1);
java algorithm programming-challenge tree interview-questions
add a comment |Â
up vote
2
down vote
favorite
Description:
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
Note: A leaf is a node with no children.
Leetcode
Code:
class Solution
private List<List<Integer>> paths = new ArrayList<>();
public List<List<Integer>> pathSum(TreeNode root, int sum)
traverse(root, sum, new ArrayList<Integer>());
return paths;
private void traverse(TreeNode root, int sum, ArrayList<Integer> path)
if (root != null)
path.add(root.val);
if (root.left == null && root.right == null && sum == root.val)
paths.add((ArrayList) path.clone());
traverse(root.left, sum - root.val, path);
traverse(root.right, sum - root.val, path);
path.remove(path.size() - 1);
java algorithm programming-challenge tree interview-questions
add a comment |Â
up vote
2
down vote
favorite
up vote
2
down vote
favorite
Description:
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
Note: A leaf is a node with no children.
Leetcode
Code:
class Solution
private List<List<Integer>> paths = new ArrayList<>();
public List<List<Integer>> pathSum(TreeNode root, int sum)
traverse(root, sum, new ArrayList<Integer>());
return paths;
private void traverse(TreeNode root, int sum, ArrayList<Integer> path)
if (root != null)
path.add(root.val);
if (root.left == null && root.right == null && sum == root.val)
paths.add((ArrayList) path.clone());
traverse(root.left, sum - root.val, path);
traverse(root.right, sum - root.val, path);
path.remove(path.size() - 1);
java algorithm programming-challenge tree interview-questions
Description:
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
Note: A leaf is a node with no children.
Leetcode
Code:
class Solution
private List<List<Integer>> paths = new ArrayList<>();
public List<List<Integer>> pathSum(TreeNode root, int sum)
traverse(root, sum, new ArrayList<Integer>());
return paths;
private void traverse(TreeNode root, int sum, ArrayList<Integer> path)
if (root != null)
path.add(root.val);
if (root.left == null && root.right == null && sum == root.val)
paths.add((ArrayList) path.clone());
traverse(root.left, sum - root.val, path);
traverse(root.right, sum - root.val, path);
path.remove(path.size() - 1);
java algorithm programming-challenge tree interview-questions
asked Jun 24 at 13:02
CodeYogi
1,99932060
1,99932060
add a comment |Â
add a comment |Â
1 Answer
1
active
oldest
votes
up vote
1
down vote
accepted
It's a fine solution. I have a few minor comments.
It's easy to overlook that
pathSumdoesn't clear the content ofpaths, which will affect the returned value from subsequent calls, which is likely to be unexpected by callers. In this online puzzle it doesn't seem to matter, but I think it's better to avoid any possible confusion.The
clonewith the cast is ugly. The.clone()method except on arrays is a bit controversial, with questionable benefits if any. I suggest to avoid it. You can replace it with a nice cleanpaths.add(new ArrayList<>(path))The signature of
traversewould be better to useListinstead ofArrayList.I would use an early return in
traverse, to have less indented code.
add a comment |Â
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
accepted
It's a fine solution. I have a few minor comments.
It's easy to overlook that
pathSumdoesn't clear the content ofpaths, which will affect the returned value from subsequent calls, which is likely to be unexpected by callers. In this online puzzle it doesn't seem to matter, but I think it's better to avoid any possible confusion.The
clonewith the cast is ugly. The.clone()method except on arrays is a bit controversial, with questionable benefits if any. I suggest to avoid it. You can replace it with a nice cleanpaths.add(new ArrayList<>(path))The signature of
traversewould be better to useListinstead ofArrayList.I would use an early return in
traverse, to have less indented code.
add a comment |Â
up vote
1
down vote
accepted
It's a fine solution. I have a few minor comments.
It's easy to overlook that
pathSumdoesn't clear the content ofpaths, which will affect the returned value from subsequent calls, which is likely to be unexpected by callers. In this online puzzle it doesn't seem to matter, but I think it's better to avoid any possible confusion.The
clonewith the cast is ugly. The.clone()method except on arrays is a bit controversial, with questionable benefits if any. I suggest to avoid it. You can replace it with a nice cleanpaths.add(new ArrayList<>(path))The signature of
traversewould be better to useListinstead ofArrayList.I would use an early return in
traverse, to have less indented code.
add a comment |Â
up vote
1
down vote
accepted
up vote
1
down vote
accepted
It's a fine solution. I have a few minor comments.
It's easy to overlook that
pathSumdoesn't clear the content ofpaths, which will affect the returned value from subsequent calls, which is likely to be unexpected by callers. In this online puzzle it doesn't seem to matter, but I think it's better to avoid any possible confusion.The
clonewith the cast is ugly. The.clone()method except on arrays is a bit controversial, with questionable benefits if any. I suggest to avoid it. You can replace it with a nice cleanpaths.add(new ArrayList<>(path))The signature of
traversewould be better to useListinstead ofArrayList.I would use an early return in
traverse, to have less indented code.
It's a fine solution. I have a few minor comments.
It's easy to overlook that
pathSumdoesn't clear the content ofpaths, which will affect the returned value from subsequent calls, which is likely to be unexpected by callers. In this online puzzle it doesn't seem to matter, but I think it's better to avoid any possible confusion.The
clonewith the cast is ugly. The.clone()method except on arrays is a bit controversial, with questionable benefits if any. I suggest to avoid it. You can replace it with a nice cleanpaths.add(new ArrayList<>(path))The signature of
traversewould be better to useListinstead ofArrayList.I would use an early return in
traverse, to have less indented code.
answered Jun 26 at 19:40
janos
95.3k12119342
95.3k12119342
add a comment |Â
add a comment |Â
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f197161%2ffind-all-k-sum-paths-in-a-binary-tree%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password