113. 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.
Note: A leaf is a node with no children.
Example:
Given the below binary tree and sum = 22, 5 / \ 48 // \ 11134 /\/ \ 7251
Return:
[ [5,4,11,2], [5,8,4,5] ]
難度:medium
題目:給定二叉樹與一個數和sum,找出所有由根到葉結點的和為sum的路徑
思路:遞迴(前序遍歷)
Runtime: 2 ms, faster than 56.03% of Java online submissions for Path Sum II.
Memory Usage: 37.6 MB, less than 100.00% of Java online submissions for Path Sum II.
/** * Definition for a binary tree node. * public class TreeNode { *int val; *TreeNode left; *TreeNode right; *TreeNode(int x) { val = x; } * } */ class Solution { public List<List<Integer>> pathSum(TreeNode root, int sum) { List<List<Integer>> result = new ArrayList<>(); pathSum(root, sum, new Stack<>(), result); return result; } private void pathSum(TreeNode root, int sum, Stack<Integer> stack, List<List<Integer>> result) { if (null != root) { if (null == root.left && null == root.right) { if (sum == root.val) { stack.push(root.val); result.add(new ArrayList<>(stack)); stack.pop(); } } else { stack.push(root.val); pathSum(root.left, sum - root.val, stack, result); pathSum(root.right, sum - root.val, stack, result); stack.pop(); } } } }