LeetCode Path Sum II
来源:互联网 发布:瓦格纳 马拉 知乎 编辑:程序博客网 时间:2024/05/16 05:34
题目描述:https://oj.leetcode.com/problems/path-sum-ii/
给定一个二叉树,一个sum,找出所有从根结点到叶节点的路径,路径上的节点和为sum。DFS 可解,不多说。
package Path_Sum_II;import java.util.*;public class Solution { class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; }}public void dfs(TreeNode root,int sum,List<List<Integer>>ans,List<Integer>list){if(root.left==null&&root.right==null){ int sum1 =0;for(Integer i:list){sum1+=i;}if(sum1==sum)ans.add(new LinkedList<Integer>(list));return;}if(root.left != null){list.add(root.left.val);dfs(root.left,sum,ans,list);list.remove(list.size()-1);}if(root.right != null){list.add(root.right.val);dfs(root.right,sum,ans,list);list.remove(list.size()-1);}} public List<List<Integer>> pathSum(TreeNode root, int sum) { List<List<Integer>> ans = new LinkedList<List<Integer>>(); if(root!=null){ List<Integer> list = new LinkedList<Integer>(); list.add(root.val); dfs(root,sum,ans,list); } return ans; } // for test public TreeNode construct(int[] nodes){ TreeNode[] treenodes = new TreeNode[nodes.length]; treenodes[0] = new TreeNode(nodes[0]); for(int i=1;i<nodes.length;i++){ if(nodes[i] != -1){ treenodes[i]=new TreeNode(nodes[i]); if(i%2==1) treenodes[i/2].left=treenodes[i]; if(i%2==0) treenodes[i/2-1].right=treenodes[i]; } } return treenodes[0]; }public static void main(String[] args) {int[] nums = new int[]{5,4,8,11,-1,13,4,7,2,-1,-1,-1,-1,5,1};TreeNode root = new Solution().construct(nums);List<List<Integer>> ans = new Solution().pathSum(root,22);for(List<Integer> list :ans){for(Integer i : list){System.out.print(i+" ");}System.out.println("");}}}
0 0
- LeetCode: Path Sum II
- LeetCode Path Sum II
- [Leetcode] Path Sum II
- LeetCode: Path Sum II
- [LeetCode] Path Sum II
- 【leetcode】Path Sum II
- [LeetCode]Path Sum II
- [Leetcode]Path Sum II
- [leetcode]Path Sum II
- Leetcode: Path Sum II
- LeetCode-Path Sum II
- [leetcode] Path Sum II
- LeetCode - Path Sum II
- [LeetCode] Path Sum II
- Leetcode Path Sum II
- LeetCode | Path Sum II
- 【leetcode】Path Sum II
- [LeetCode] Path Sum II
- G++ -I 与 -L选项 编译 连接 选项
- 3.选择排序
- QML类型说明-Calendar
- 八、 异步调用WebService
- Creating a timer dispatch source
- LeetCode Path Sum II
- PAT 1066 平衡树
- HDU 1242 Rescue(求最短时间救出同伴,BFS+DP)
- iOS摄像头和相册-UIImagePickerController-浅析
- 九、 编写Module模块
- jq笔记
- POJ 3378——Crazy Thairs(树状数组+dp+高精度)数据结构优化的DP
- 四种map的访问方法
- 黑马程序员_Java 高新技术(5)