Path Sum
2015-04-10 09:52 笨笨的老兔子 阅读(119) 评论(0) 编辑 收藏 举报给定一个二叉树和一个整数,求是否存在一条从根节点到叶节点的路径,路径上所有点的和等于给定的整数
思路:用广度优先搜索,将当前节点的值传到下一层节点即可。即将每一个节点的值更新为从根节点到该点的值的和
class Solution {
public:
bool hasPathSum(TreeNode *root, int sum) {
if (!root)
return false;
queue<TreeNode*> qNode;
qNode.push(root);
TreeNode* tmpNode = NULL;
while (!qNode.empty())
{
int qSize = qNode.size();
for (size_t i = 0; i < qSize; i++)
{
tmpNode = qNode.front();
if (tmpNode->val == sum && !tmpNode->left && !tmpNode->right)
{
return true;
}
else
{
if (tmpNode->left)
{
tmpNode->left->val += tmpNode->val;
qNode.push(tmpNode->left);
}
if (tmpNode->right)
{
tmpNode->right->val += tmpNode->val;
qNode.push(tmpNode->right);
}
}
qNode.pop();
}
}
return false;
}
};