中级农民
- 积分
- 112
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2018-11-14
- 最后登录
- 1970-1-1
|
继续刷tree tag
Leetcode 113. Path Sum II
首先我们知道Path sum只要返回boolean,这道题要换回所有的path(path sum = given sum).
首先这道题大致思路是一样的。因为这条path必须从root到leaf,我们就判断到left的时候,sum是不是相等。而我们每次地柜呢,就是用sum-root.val.
代码如下
- /**
- * Definition for a binary tree node.
- * public class TreeNode {
- * int val;
- * TreeNode left;
- * TreeNode right;
- * TreeNode(int x) { val = x; }
- * }
- */
- class Solution {
- public List<List<Integer>> pathSum(TreeNode root, int sum) {
- List<List<Integer>> res = new ArrayList<>();
- if(root == null)
- return res;
-
- List<Integer> temp_res = new ArrayList<>();
- helper(root, sum, res, temp_res);
- return res;
- }
-
- public void helper(TreeNode root, int sum, List<List<Integer>> res, List<Integer> temp_res)
- {
- if(root == null)
- return;
-
- temp_res.add(root.val);
-
- if(root.left == null && root.right == null && sum == root.val)
- {
- res.add(new ArrayList<Integer>(temp_res));
- // return;
- }else
- {
- helper(root.left, sum-root.val, res, temp_res);
- helper(root.right, sum-root.val, res, temp_res);
- }
-
- temp_res.remove(temp_res.size()-1);
-
- }
- }
复制代码
|
|