Path Sum
程序员文章站
2022-05-19 10:04:33
...
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public boolean hasPathSum(TreeNode root, int sum) {
if(root==null){
return false;
}
Stack<TreeNode> nodeStack = new Stack<>();
Stack<Integer> numStack = new Stack<>();
nodeStack.push(root);
numStack.push(sum);
//后序遍历的写法
while(!nodeStack.isEmpty()){
TreeNode node = nodeStack.pop();
int num = numStack.pop();
if(node.left == null && node.right==null && node.val==num){
//如果满足条件,就找到了,找到一个就可以返回
//如果没有满足条件,也就走不到这里,会继续走下面的语句
return true;
}
//如果一个节点 既没有左右儿子也没有满足条件,while分支就剩下pop了
//对于同一个父节点,numstack放的值是同一个;为了的就是当一个孩子不满足的
//时候,pop完了,再去查看另外一个子节点是否满足情况
if(node.left != null){
nodeStack.push(node.left);
numStack.push(num-node.val);
}
if(node.right != null){
nodeStack.push(node.right);
numStack.push(num-node.val);
}
}
return false;
}
}
上一篇: Happy Path