定义两个队列,一个存节点(队列一),一个存到目前为止的和(队列二)。如果是叶子节点并且目前队列二的值等于目标值,就返回true。
将4添加到队列1的时候同时将9添加到队列二。
public boolean hasPathSum(TreeNode root, int targetSum) {
if(root == null) return false;
Queue<TreeNode> queue = new LinkedList<>();
Queue<Integer> queueVal = new LinkedList<>();
queue.add(root);
queueVal.add(root.val);
while(!queue.isEmpty()){
int size = queue.size();
for(;size>0;size--){
TreeNode node = queue.poll();
int val = queueVal.poll();
if(node.left == null && node.right == null && val == targetSum) return true;
if(node.left != null){
queue.add(node.left);
queueVal.add(node.left.val + val);
}
if(node.right != null) {
queue.add(node.right);
queueVal.add(node.right.val + val);
}
}
}
return false;
}