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
,
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.
//二叉树为空时,全部返回false //从根结点到叶子结点的和为sum,而不是到某一个结点处和为sum就行 //二叉树的值可以为负值 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) { if(root==NULL) return false; else { int v=root->val; if(root->right==NULL&&root->left==NULL&&sum-v==0) return true; else if(root->left!=NULL&&hasPathSum(root->left,sum-v)==true) return true; else if(root->right!=NULL&&hasPathSum(root->right,sum-v)==true) return true; else return false; } } };
时间: 2024-10-21 06:48:23