[LeetCode]Path Sum II
2014-03-24 16:36
246 查看
题目描述
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] ]
给出二叉树中路径值等于给定数的所有路径。
解题思路
按以下步骤进行:root == null,则返回空list;
root是叶子节点,如果root.val == sum,返回添加有root的list,否则返回空list;
如果root不是叶子节点 && root.left!=null,得到leftList = pathSum(root.left, sum - root.val),遍历leftList,进行操作add(0, root.val),遍历完成后将leftList赋值给list;
如果root不是叶子节点 && root.right!=null,得到rightList = pathSum(root.right, sum - root.val),遍历rightList,进行操作add(0,
root.val),同时在每次循环中list进行add新的rightList元素的操作;
返回list。
代码
public static ArrayList<ArrayList<Integer>> pathSum(TreeNode root, int sum) { ArrayList<ArrayList<Integer>> allList = new ArrayList<ArrayList<Integer>>(); ArrayList<Integer> list = new ArrayList<Integer>(); if (root == null) { return allList; } if (root.left == null && root.right == null) { if (root.val == sum) { list.add(root.val); allList.add(list); } return allList; } if (root.left != null) { ArrayList<ArrayList<Integer>> leftList = pathSum(root.left, sum - root.val); if (leftList!=null && leftList.size()>0) { for(ArrayList<Integer> child:leftList){ child.add(0, root.val); } allList = leftList; } } if(root.right != null){ ArrayList<ArrayList<Integer>> rightList = pathSum(root.right, sum - root.val); if (rightList!=null && rightList.size()>0) { for(ArrayList<Integer> child:rightList){ child.add(0, root.val); allList.add(child); } } } return allList; }
相关文章推荐
- Leetcode[113]-Path Sum II
- 【一天一道LeetCode】#113. Path Sum II
- leetcode:Path Sum II 【Java】
- leetcode---Path Sum II---回溯
- LeetCode(113) Path Sum II
- Leetcode 113. Path Sum II 路径和2 解题报告
- 【leetcode c++】113 Path Sum II
- leetcode 113. Path Sum II DFS深度优先遍历
- LEETCODE: Path Sum II
- Path Sum II :from LeetCode
- [leetcode]Path Sum II
- LeetCode题解-113-Path Sum II
- 【leetcode】Path Sum I & II(middle)
- [LeetCode] 113. Path Sum II
- [leetcode]Path Sum II
- Leetcode[113]-Path Sum II
- LeetCode 113:Path Sum II
- leetcode-Path Sum II
- *LeetCode-Path Sum II
- Path Sum II -- LeetCode