• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

xxxqqq

  • 博客园
  • 联系
  • 订阅
  • 管理

View Post

Binary Tree Path Sum

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]
]


 1 /**
 2  * Definition of TreeNode:
 3  * public class TreeNode {
 4  *     public int val;
 5  *     public TreeNode left, right;
 6  *     public TreeNode(int val) {
 7  *         this.val = val;
 8  *         this.left = this.right = null;
 9  *     }
10  * }
11  */
12 public class Solution {
13     /**
14      * @param root the root of binary tree
15      * @param target an integer
16      * @return all valid paths
17      */
18     public List<List<Integer>> binaryTreePathSum(TreeNode root, int target) {
19         // Write your code here
20         List<List<Integer>> res = new ArrayList<List<Integer>>();
21         if (root == null){
22             return res;
23         }
24         List<Integer> path = new ArrayList<Integer>();
25         helper(res, path, root, target);
26         return res;
27     }
28 
29     private void helper(List<List<Integer>> res, List<Integer> path, TreeNode root, int target){
30         if (root.left == null && root.right == null){
31             if (root.val == target) {
32                 path.add(root.val);
33                 res.add(new ArrayList<Integer>(path));
34                 path.remove(path.size() - 1);
35             }
36             return;
37         }
38         path.add(root.val);
39         if (root.left != null) {
40             helper(res, path, root.left, target - root.val);
41         }
42         if (root.right != null) {
43             helper(res, path, root.right, target - root.val);
44         }
45         path.remove(path.size() - 1);
46         return;
47     }
48 }

 

posted on 2017-05-10 14:36  xxxqqq  阅读(154)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3