树枝节点之和是否等于给定值

比如一个 [3, 1, 5, 10] 的树,设其根结点为 root, 那么对于函数 hasPathSum(root, 18) 的返回值就是 true。

题目列出的知识点是深度优先搜索,可是我刚明白一点动态规划,所以我考虑的是,符合条件的树枝去掉叶子,剩下节点的和必然等于给定值减去叶子节点。

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

 

posted @ 2015-09-05 22:51  wu_overflow  阅读(158)  评论(0编辑  收藏  举报