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 / \ 4 8 / / \ 11 13 4 / \ / \7 2 5 1Return:[ [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(); } } }}