[leet code] Path Sum II
来源:互联网 发布:linux网络命令大全 编辑:程序博客网 时间:2024/06/06 00:14
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
For example:Given the below binary tree and
sum = 22
,5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1
return
[ [5,4,11,2], [5,8,4,5]]==============
Analysis:
1. Recursive approach, each recursive call focus on one node.
for each recursive call:
2. add current node value to sum of the current path and add node value into int array list of current path.
3. if leaf reached, compare sum of current path with target sum.
4. If current node is not leaf, then check its left subtree and right subtree.
Recursive function exit: current node == null or leaf reached
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public ArrayList<ArrayList<Integer>> pathSum(TreeNode root, int sum) { ArrayList<ArrayList<Integer>> paths = new ArrayList<ArrayList<Integer>>(); ArrayList<Integer> singlePath = new ArrayList<Integer>(); helper(root, sum, paths, singlePath, 0); return paths; } public void helper(TreeNode node, int sum, ArrayList<ArrayList<Integer>> paths, ArrayList<Integer> singlePath, int tempSum){ if (node == null) return; tempSum+=node.val; singlePath.add(node.val); if(node.left==null&&node.right==null) {// reached the leaf if(tempSum==sum) paths.add(new ArrayList<Integer>(singlePath)); singlePath.remove(singlePath.size()-1); return; } helper(node.left, sum, paths, singlePath, tempSum); helper(node.right, sum, paths, singlePath, tempSum); singlePath.remove(singlePath.size()-1); }}Note: remove the last element of the array list of current path before return in recursive function.
0 0
- [leet code] Path Sum II
- [leet code] Path Sum
- [leet code] Minimum Path Sum
- 【Leet Code】64. Minimum Path Sum---Medium
- CODE 20: Path Sum II
- Binary Tree Maximum Path Sum[leet code test cases passed]
- Leet Code OJ 112. Path Sum [Difficulty: Easy]
- [leet code] Combination Sum
- [Leet Code] 4sum
- [leet code] Subsets II
- [leet code] Permutations II
- leetcode 日经贴,Cpp code -Path Sum II
- [leet code] 3Sum Closest
- [leet code] Single Number II
- [leet code] Spiral Matrix II
- [leet code] N-Queens & II
- [leet code] Unique Paths II
- Leet Code: Single Number II
- Ideas on Reporting a bug
- 第十一章:使用Virgo开发OSGi应用程序-工程篇
- uva 1316 - Supermarket(贪心)
- poj1006中国剩余定理
- uva 11462 - Age Sort(计数排序+输入外挂)
- [leet code] Path Sum II
- 2013,我的创业记忆片段
- 一元二次方程求解
- USB转串口线及相关芯片
- Linux I/O模型思考
- poj2407欧拉函数基础题
- IT程序员必备google浏览器Chrome插件_最优推荐_筛选N次
- C/C++单元测试工具Visual Unit 4发布
- 视觉跟踪算法