Path Sum

路径总和1

  给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。

  说明: 叶子节点是指没有子节点的节点。

解答:

  该题强调了叶子节点的定义,指的是没有子节点的节点。因此考虑一种特殊的情况,根节点为目标值,但根节点有其他的

子树,此时认为该路径是不存在的。同时根节点为空的情况也需要特殊的考虑。本题的递归代码如下:

class Solution {
public:
    bool hasPathSum(TreeNode* root, int sum) {
        if (!root) return false;
        if (!root->left && !root->right && root->val == sum ) return true;
        return hasPathSum(root->left, sum - root->val) || hasPathSum(root->right, sum - root->val);
    }
};

  根节点为空,直接返回错误,同时该条件叶表明如果在递归查找的过程当中,已经查找到了根节点位置,则此时应该返回false

,即在到叶节点路径上的所有值和不能够满足条件。返回正确的结果时,必须是该节点为叶节点,并且此时节点上的值和目标值是

相同的。

posted @ 2019-11-28 21:42  一只小菜鸡a  阅读(92)  评论(0)    收藏  举报