problem
Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.
For example:
Given the below binary tree and sum = 22,
1 2 3 4 5 6 7
| 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1
|
return true, as there exist a root-to-leaf path 5->4->11->2 which sum is 22.
Analysis
using simple deep first search
code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
class Solution { public: bool deep_first_search(TreeNode *node, int sum, int curSum) { if (node == NULL) return false; if (node->left == NULL && node->right == NULL) return curSum + node->val == sum; return deep_first_search(node->left, sum, curSum + node->val) || deep_first_search(node->right, sum, curSum + node->val); } bool hasPathSum(TreeNode *root, int sum) { return deep_first_search(root, sum, 0); } };
|