给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。
叶子节点 是指没有子节点的节点。
方法一:广度搜索,用队列,每一层将当前节点到根节点的路径和记录下来,当来到叶子节点时,判断是否等于目标和。
class Solution {
public:
bool hasPathSum(TreeNode* root, int targetSum) {
if(root == NULL) return false;
queue<TreeNode*> node;
queue<int> val;
node.push(root);
val.push(root->val);
while(!node.empty()){
TreeNode* cur = node.front();
int curv = val.front();
node.pop();val.pop();
if(!cur->left && !cur->right){
if(curv == targetSum) {return true;}
continue;
}
if(cur->left != NULL){
node.push(cur->left);
val.push(curv + cur->left->val);
}
if(cur->right != NULL){
node.push(cur->right);
val.push(curv + cur->right->val);
}
}
return false;
}
};