这道题目和是path-sum的变形,其实还是比较简单的。我再重复写一遍之前的代码好了。
啊啊啊,重复使得我加深印象。我热爱重复
清明节刷的第四道题目。
给定一个二叉树和一个值sum,请找出所有的根节点到叶子节点的节点值之和等于sum的路径, 例如: 给出如下的二叉树,sum=22,
解题代码
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
public ArrayList<ArrayList<Integer>> pathSum(TreeNode root, int sum) {
//这道题目和是path-sum的变形,其实还是比较简单的。我再重复写一遍之前的代码好了。
//啊啊啊,重复使得我加深印象。我热爱重复
ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
if(root == null)return result;//牛客网好坑爹,这种的不允许直接返回null
ArrayList<Integer> path = new ArrayList<Integer>();
int pathSum = root.val;
Stack<TreeNode> stackNode = new Stack<>();
Stack<Integer> stackFlag = new Stack<>();
//把root数据初始化进去
path.add(root.val);
stackNode.push(root);
stackFlag.push(0);
while(!stackNode.isEmpty()){
TreeNode tempNode = stackNode.peek();
int tempFlag = stackFlag.peek();
if(tempFlag == 0){
//如果左右子树没有被访问过,优先判断是否为叶子节点
if(tempNode.left


京公网安备 11010502036488号