Path Sum
Given a binary tree and a sum, determine if the tree has a root-to-leaf path such this adding up all the values along the Path equals the given sum.
For Example:
Given The below binary tree and
sum = 22
,
5 / 4 8 / / / 4 / \ 7 2 1
Return true, as there exist a root-to-leaf path 5->4->11->2
which sum is 22.
Whether there is a sum from the root node to the leaf node equals the number given.
Recursive one
/** * Definition for a binary tree node. * struct TreeNode {* int val; * TreeNode *left; * TreeNode *right; * TreeNode (int x): Val (x), left (NULL) , right (NULL) {}}; */class Solution {public: void Solve (treenode* root,int sum,bool& f,int s) { if (!root->left&&! Root->right) { if (s==sum) f=true; return; } if (root->left) solve (root->left,sum,f,s+root->left->val); if (root->right) solve (root->right,sum,f,s+root->right->val); } BOOL Haspathsum (treenode* root, int sum) { bool f=false; if (!root) return false;//is empty then return false solve (root,sum,f,root->val); return f; };
Recursive
/** * Definition for a binary tree node. * struct TreeNode {* int val; * TreeNode *left; * TreeNode *right; * TreeNode (int x): Val (x), left (NULL) , right (NULL) {}}; */class Solution {public: bool Haspathsum (treenode* root, int sum) { return solve (root,sum,0); } BOOL Solve (treenode* root,int sum,int s) { if (!root) return false; if (!root->left&&!root->right) return sum==s+root->val; return solve (root->left,sum,s+root->val) | | Solve (root->right,sum,s+root->val);//existence can be used | | };
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
Leetcoder-112-path Sum