Tree-----找出和等于给定数字的所有路径(113. Path Sum II)
2017-05-05 23:45
501 查看
原题目
主要就是一个深度优先,深度优先本来就是用来解决图的问题
主要就是一个深度优先,深度优先本来就是用来解决图的问题
1.原题目
public List<List<Integer>> pathSum(TreeNode root, int sum) { List<List<Integer>> result = new ArrayList<>(); List<Integer> item = new ArrayList<>(); if (root == null) { return result; } dfs(root, sum, item, result); return result; } public void dfs(TreeNode root, int sum, List<Integer> item, List<List<Integer>> result) { //临界条件,注意不是在这里进行result判断,结束条件是叶子节点而不是空节点 if (root == null) { return; } item.add(root.val); sum -= root.val; if (root.left == null && root.right == null) { if (sum == 0) { result.add(new ArrayList<>(item)); } } else { //尝试各种情况并进入下一状态 if (root.left != null) { dfs(root.left, sum, item, result); } if (root.right != null) { dfs(root.right, sum, item, result); } } //回收尝试 item.remove(item.size() - 1); }
2.变形:求从根节点到所有叶子节点的路径
public List<List<Integer>> pathAll(TreeNode root){ List<List<Integer>> result=new ArrayList<>(); List<Integer> item=new ArrayList<>(); if(root==null){ return result; } dfs(root,item,result); return result; } public void dfs(TreeNode root,List<Integer> item,List<List<Integer>> result){ if(root==null){ return ; } item.add(root.val); if(root.left==null&&root.right==null){ result.add(new ArrayList<>(item)); }else { if(root.left!=null){ dfs(root.left,item,result); } if(root.right!=null){ dfs(root.right,item,result); } } item.remove(item.size()-1); }
3.求最长路径,最短路径
求出所有路径了,,,判断路径长短还不简单?相关文章推荐
- 【二叉树的递归】04找出二叉树中路径和等于给定值的所有路径【Path Sum II】
- 113. Path Sum II(求等于某个数的所有路径)
- [LeetCode]113. Path Sum II(列出二叉树根到叶路径和等于sum的所有路径)
- Leetcode:112. Path Sum (求Tree中是否存在路径的和等于给定值)
- 找出二叉树中和为k的所有路径 Path Sum II
- [LeetCode] 113. Path Sum II 路径和 II
- LeetCode(Binary Tree Maximum Path Sum) 在二叉树中找出一条和最大的路径
- 给定一棵二叉树,二叉树每个节点的值唯一,从根节点开始找出路径上的所有节点的节点值之和等于规定值的路径
- LeetCode 113. Path Sum II(路径和)
- leetcode 113. Path Sum II-路径和|回溯算法
- Path Sum 一个树里边,看看有没有一条路径上边的和等于给定的数
- 113.Path Sum II&二叉树中和为某一值的路径
- Path Sum II 二叉树路径和,打印所有路径 @LeetCode
- leetcode 113. Path Sum II (路径和) 解题思路和方法
- Tree-----根据给定的数字找路径(112. Path Sum)
- Leetcode 113. Path Sum II 路径和2 解题报告
- 【二叉树】DFS计算路径和,保存路径【113. Path Sum II】【112. Path Sum】
- leetcode 113. Path Sum II (路径和) 解题思路和方法
- 节点数值总和等于某个给定值的所有路径
- LeetCode | Path Sum II(路径和2)