LeetCode 113. Path Sum II(路径和)
来源:互联网 发布:大数据徐子沛 编辑:程序博客网 时间:2024/05/21 23:00
原题网址:https://leetcode.com/problems/path-sum-ii/
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]]
方法:深度优先搜索。
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { private List<List<Integer>> paths = new ArrayList<>(); private void find(TreeNode root, List<Integer> values, int currentSum, int targetSum) { if (root == null) return; values.add(root.val); currentSum += root.val; if (root.left != null && root.right != null) { find(root.left, values, currentSum, targetSum); find(root.right, values, currentSum, targetSum); } else if (root.left != null) { find(root.left, values, currentSum, targetSum); } else if (root.right != null) { find(root.right, values, currentSum, targetSum); } else if (currentSum == targetSum) { List<Integer> path = new ArrayList<>(values.size()); path.addAll(values); paths.add(path); } values.remove(values.size()-1); } public List<List<Integer>> pathSum(TreeNode root, int sum) { find(root, new ArrayList<>(), 0, sum); return paths; }}
另一种实现:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { private List<List<Integer>> results = new ArrayList<>(); private void find(List<Integer> path, TreeNode root, int sum) { if (root == null) return; if (root.left == null && root.right == null && root.val == sum) { List<Integer> result = new ArrayList<>(); result.addAll(path); result.add(root.val); results.add(result); return; } path.add(root.val); if (root.left != null) { find(path, root.left, sum-root.val); } if (root.right != null) { find(path, root.right, sum-root.val); } path.remove(path.size()-1); } public List<List<Integer>> pathSum(TreeNode root, int sum) { find(new ArrayList<>(), root, sum); return results; }}
0 0
- LeetCode 113. Path Sum II(路径和)
- LeetCode Path Sum II路径和II
- leetcode 113. Path Sum II-路径和|回溯算法
- Leetcode 113. Path Sum II 路径和2 解题报告
- LeetCode | Path Sum II(路径和2)
- LeetCode OJ 之 Path Sum II (路径和 - 二)
- Path Sum II --路径和(重)
- [Leetcode]113. Path Sum II 求路径和一个数的所有路径
- 【leetcode 二叉树路径和】Path Sum 和 Path Sum II
- leetcode 113. Path Sum II (路径和) 解题思路和方法
- LeetCode | Path Sum(路径和)
- LeetCode 112. Path Sum(路径和)
- Path Sum II 路径和II
- [LeetCode]113. Path Sum II(列出二叉树根到叶路径和等于sum的所有路径)
- 【leetcode】113Path Sum II(DFS输出路径)
- 【LeetCode-面试算法经典-Java实现】【113-Path Sum II(路径和)】
- LeetCode Path Sum 路径和
- [LeetCode] 路径和 Path Sum
- LeetCode 110. Balanced Binary Tree(平衡二叉树)
- LeetCode 111. Minimum Depth of Binary Tree(二叉树最小深度)
- LeetCode 112. Path Sum(路径和)
- 软件架构设计原则和模式(上):分层架构设计
- 最新的版的PostgresSQL引入了BRIN索引
- LeetCode 113. Path Sum II(路径和)
- LeetCode 114. Flatten Binary Tree to Linked List(摊平二叉树)
- WindowBuilder的离线安装与使用
- git使用命令
- apache结合svn笔记
- tp执行流程分析
- smarty引入流程
- EL表达式
- SAD算法在opencv上的实现代码(c++)