首页 > 代码库 > Binary Tree Path Sum Lintcode
Binary Tree Path Sum Lintcode
Given a binary tree, find all paths that sum of the nodes in the path equals to a given number target
.
A valid path is from root node to any of the leaf nodes.
Have you met this question in a real interview?
Yes
Example
Given a binary tree, and target = 5
:
1
/ 2 4
/ 2 3
return
[
[1, 2, 2],
[1, 4]
]
这道题居然一遍bug free了。。。但好像空间复杂度有点高。。。
public class Solution { /** * @param root the root of binary tree * @param target an integer * @return all valid paths */ public List<List<Integer>> binaryTreePathSum(TreeNode root, int target) { List<List<Integer>> res = new ArrayList<>(); helper(root, target, res, new ArrayList<Integer>()); return res; } public TreeNode helper(TreeNode root, int target, List<List<Integer>> res, List<Integer> sub) { if (root == null) { return null; } sub.add(root.val); TreeNode left = helper(root.left, target - root.val, res, new ArrayList<>(sub)); TreeNode right = helper(root.right, target - root.val, res, new ArrayList<>(sub)); if (left == null && right == null && target - root.val == 0) { res.add(sub); } return root; } }
看了下答案,原来还可以改进一下,每次回去的时候把添加的值去掉,这样就不用不停地建新的了。对递归的认识好像又深了一点呢。
Binary Tree Path Sum Lintcode
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。