给定一棵二叉树和一个和,确定该树是否有根到叶的路径,以便将路径上的所有值相加等于给定的值,这就是路径和。其中的叶指的是叶结点(没有孩子)。
代码
首先,定义结点信息:
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
先实现路径和是否存在的迭代版本:
bool hasPathSum(TreeNode* root, int sum) {
bool result = false;
if (NULL == root) {
return false;
}
stack<TreeNode*> s;
s.push(root);
stack<int> sSum;
sSum.push(root->val);
while (!s.empty()) {
TreeNode* node = s.top();
s.pop();
int currSum = sSum.top();
sSum.pop();
if (sum == currSu