目录
一、题目描述


二、初次解答
**1. 思路:二叉树先序遍历。**首先访问根节点,若根节点是叶子节点并且值等于目标值,则返回true,否则递归访问左子树和右子树,只要左子树和右子树的返回值有一个为true即可。
2. 代码:
cppbool hasPathSum(struct TreeNode* root, int targetSum) { if(!root) return false; if(!root->left && !root->right){ return root->val == targetSum; } return hasPathSum(root->left, targetSum-root->val) || hasPathSum(root->right, targetSum-root->val); }
**3. 优点:**仅遍历一遍,时间复杂度为O(n)。
**4. 缺点:**利用了递归,空间复杂度为O(H)。
三、官方解法
官方解法一需要手动维护队列,空间开销更大;官方解法二与上述解法相同。
四、总结
针对二叉树的路径问题,利用二叉树先序遍历的递归方法可以轻松解决。