/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public boolean hasPathSum(TreeNode root, int sum) {
Stack<TreeNode> node = new Stack<>();
Stack<Integer> val = new Stack<>();//用一个栈来存放从根结点到每个结点的路径长度(不是0,1,而是node.val),实时跟踪对应存放该结点的栈
TreeNode pop = null;
int popint = 0;
if(root == null) return false;//没有结点直接返回false
node.push(root);
val.push(root.val);
while(!node.isEmpty()){
pop = node.pop();
popint = val.pop();
if(pop.left == null && pop.right == null){//找到叶结点
if(popint == sum) return true;
}
if(pop.right != null){
node.push(pop.right);
val.push(popint + pop.right.val);
}
if(pop.left != null){
node.push(pop.left);
val.push(popint + pop.left.val);
}
}
return false;
}
}
leetcode [Path Sum]//待整理多种解法
最新推荐文章于 2022-07-04 03:26:59 发布