我正在解决LeetCode (Range Sum of BST)上的第一个树问题,在这个问题中,你必须实现一个函数,该函数返回一个BST的所有节点的总和,这些节点的值在2个给定值L和R之间。我的第一个解决方案是:
int rangeSumBST(TreeNode* root, int L, int R) {
if (root == NULL) return 0;
else if (root -> val >= L && root-> val <=R) return root->val + rangeSumBST(root->left,L,R) + rangeSumBST(root->right,L,R);
else if (root->val < L) return rangeSumBST(root->right, L, R);
else return rangeSumBST(root->left, L, R);
}运行时间是160ms,这被表示为“比提交的20%更快”。
然后,我只将if (root == NULL) return 0;更改为if (!root) return 0;
它产生了巨大的差异;运行时间减少到100ms(比所有提交的97%更快)。
为什么会发生这种情况?
https://stackoverflow.com/questions/58578196
复制相似问题