题面
https://leetcode.cn/problems/path-sum/
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。
说明: 叶子节点是指没有子节点的节点。
示例: 给定如下二叉树,以及目标和 sum = 22,

返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2。
思路
递归写法
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
| class Solution { private: bool traversal(TreeNode* cur, int count) { if (!cur->left && !cur->right && count == 0) return true; if (!cur->left && !cur->right) return false;
if (cur->left) { count -= cur->left->val; if (traversal(cur->left, count)) return true; count += cur->left->val; } if (cur->right) { count -= cur->right->val; if (traversal(cur->right, count)) return true; count += cur->right->val; } return false; }
public: bool hasPathSum(TreeNode* root, int sum) { if (root == NULL) return false; return traversal(root, sum - root->val); } };
|
迭代写法
(待补充)