【题目】
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] ]
【思路】
Save intermediate result into stack and save the stack into result array once its sum == required sum.
注意一定是要从根到叶子。所以最后要确定左右节点都是空。
list可以直接添加stack?
【代码】
public class Solution {
private List<List<Integer>> resultList = new ArrayList<List<Integer>>();
public void pathSumInner(TreeNode root, int sum, Stack<Integer>path) {
path.push(root.val);
if(root.left == null && root.right == null)
if(sum == root.val) resultList.add(new ArrayList<Integer>(path));
if(root.left!=null) pathSumInner(root.left, sum-root.val, path);
if(root.right!=null)pathSumInner(root.right, sum-root.val, path);
path.pop();
}
public List<List<Integer>> pathSum(TreeNode root, int sum) {
if(root==null) return resultList;
Stack<Integer> path = new Stack<Integer>();
pathSumInner(root, sum, path);
return resultList;
}
}
寻找满足给定和的二叉树路径

本文介绍了一种算法,用于在给定的二叉树中找到所有从根节点到叶子节点的路径,使得这些路径上的元素之和等于指定的数值。通过使用栈保存中间结果并检查路径是否符合条件,实现高效搜索。
4832

被折叠的 条评论
为什么被折叠?



