bool hasPathSum2(TreeNode *root, int sum) {

    if (root==NULL) return false;

    if (root->left==NULL && root->right==NULL ){
        return (root->val==sum);
    }

    if (root->left){
        root->left->val += root->val;
        if (hasPathSum2(root->left, sum)){
            return true;
        }
    }

    if (root->right){
        root->right->val += root->val;
        if (hasPathSum2(root->right, sum)){
            return true;
        }
    }

    return false;
}
Пример #2
0
 bool hasPathSum(TreeNode *root, int sum) {
     // dfs version
     return hasPathSum1(root, sum);
     // bfs version
     return hasPathSum2(root, sum);
 }
Пример #3
0
 bool hasPathSum(TreeNode *root, int sum) {
     if (random()%2){
         return hasPathSum1(root, sum);    
     }
     return hasPathSum2(root, sum);
 }