代码改变世界

Path Sum

2015-04-10 09:52  笨笨的老兔子  阅读(119)  评论(0编辑  收藏  举报

给定一个二叉树和一个整数,求是否存在一条从根节点到叶节点的路径,路径上所有点的和等于给定的整数

思路:用广度优先搜索,将当前节点的值传到下一层节点即可。即将每一个节点的值更新为从根节点到该点的值的和

  1. class Solution {
  2. public:
  3. bool hasPathSum(TreeNode *root, int sum) {
  4. if (!root)
  5. return false;
  6. queue<TreeNode*> qNode;
  7. qNode.push(root);
  8. TreeNode* tmpNode = NULL;
  9. while (!qNode.empty())
  10. {
  11. int qSize = qNode.size();
  12. for (size_t i = 0; i < qSize; i++)
  13. {
  14. tmpNode = qNode.front();
  15. if (tmpNode->val == sum && !tmpNode->left && !tmpNode->right)
  16. {
  17. return true;
  18. }
  19. else
  20. {
  21. if (tmpNode->left)
  22. {
  23. tmpNode->left->val += tmpNode->val;
  24. qNode.push(tmpNode->left);
  25. }
  26. if (tmpNode->right)
  27. {
  28. tmpNode->right->val += tmpNode->val;
  29. qNode.push(tmpNode->right);
  30. }
  31. }
  32. qNode.pop();
  33. }
  34. }
  35. return false;
  36. }
  37. };