这道题目和是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