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; }
bool hasPathSum(TreeNode *root, int sum) { // dfs version return hasPathSum1(root, sum); // bfs version return hasPathSum2(root, sum); }
bool hasPathSum(TreeNode *root, int sum) { if (random()%2){ return hasPathSum1(root, sum); } return hasPathSum2(root, sum); }