Binary Tree Path Sum Lintcode
Posted 璨璨要好好学习
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.
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的主要内容,如果未能解决你的问题,请参考以下文章
124. Binary Tree Maximum Path Sum
binary-tree-maximum-path-sum(mock)