public ArrayList<ArrayList<Integer>> FindPath(TreeNode root, int target) {
ArrayList<ArrayList<Integer>> pathlist = new ArrayList<>();
if (root == null) return pathlist;
Stack<Integer> nodestack = new Stack<>();
FindPath(root, target, nodestack, pathlist);
return pathlist;
}
public void FindPath(TreeNode root, int target, Stack<Integer> nodestack, ArrayList<ArrayList<Integer>> pathList) {
if (root == null)
return;
nodestack.push(root.val);
Boolean isLeaf=root.left == null && root.right == null;
if (isLeaf) {
if (root.val == target) {
ArrayList<Integer> list = new ArrayList<>();
for (Integer temp : nodestack) {
list.add(temp);
}
pathList.add(list);
}
} else {
FindPath(root.left, target - root.val, nodestack, pathList);
FindPath(root.right, target - root.val, nodestack, pathList);
}
nodestack.pop();
}
二叉树中和为某一值的路径
最新推荐文章于 2024-08-23 11:56:42 发布