这道题目和之前前序遍历非递归实现&根节点到叶子节点的所有路径表示的数字之和这两道题目都是一样的。
用同样的思路进行请求就可以了啊。也不用递归了其实。
其中在叶子节点的处理逻辑上会有一些细微的差别。
给定一个二叉树和一个值sum,判断是否有从根节点到叶子节点的节点值之和等于sum的路径, 例如: 给出如下的二叉树,sum=22,
清明节假期的第三道题目,加油。因为明天想出去,所以今天我要加倍的写题目,要完成至少10道题目才可以,oh my god。
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ import java.util.Stack; public class Solution { public boolean hasPathSum(TreeNode root, int sum) { //这道题目和之前前序遍历非递归实现&根节点到叶子节点的所有路径表示的数字之和这两道题目都是一样的。 //用同样的思路进行请求就可以了啊。也不用递归了其实。 if(root == null)return false; int pathSum = root.val; Stack<TreeNode> stackNode = new Stack<>(); Stack<Integer> stackFlag = new Stack<>(); stackNode.push(root); stackFlag.push(0); while(!stackNode.isEmpty()){ TreeNode tempNode = stackNode.peek(); int tempFlag = stackFlag.peek(); if(tempFlag==0){ //如果为叶子节点,应该计算是否符合要求 if(tempNode.left == null &