class Solution {
public boolean hasPathSum(TreeNode root, int sum) {
if(root == null) return false;
Queue<TreeNode> queNode = new LinkedList<TreeNode>();
Queue<Integer> queVal = new LinkedList<Integer>();
//根节点加入队列
queNode.offer(root);
queVal.offer(root.val);
while(!queNode.isEmpty()){
//将now节点取出,最后加入now的左节点和右节点
//now节点就相当于queue中的第一个元素,待取出的元素
TreeNode now = queNode.poll();
int temp = queVal.poll();
if(now.left == null && now.right == null){
if(temp == sum){
return true;
}
continue;
}
if (now.left != null) {
//加入左子节点,并计算累加的值
queNode.offer(now.left);
queVal.offer(now.left.val + temp);
}
if (now.right != null) {
queNode.offer(now.right);
queVal.offer(now.right.val + temp);
}
}
return false;
}
}
当取出11时,会在队列中加入7和2,等到7位于头部时,将其取出,发现不满足条件,continue下一个节点