所以基本上我解决了leetcode上经典的倒二叉树问题。对于第一个解决方案,在基本情况下,我返回 None。该解决方案在运行时间方面仅优于 25% 左右。然而,对于第二个解决方案,我没有为基本情况返回任何内容,现在它超过了 99%。有谁知道为什么会这样?谢谢!
这是我的代码
class Solution:
def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
if not root:
return None
root.left, root.right = root.right, root.left
self.invertTree(root.left)
self.invertTree(root.right)
return root
class Solution:
def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
if not root:
return
root.left, root.right = root.right, root.left
self.invertTree(root.left)
self.invertTree(root.right)
return root
您的两个程序实际上是相同的。因为 Python 中裸露的
return
相当于 return None
。您可以通过输出代码的字节码来看到这一点。创建一个名为 x.py 的文件,其中包含以下内容:
import dis
def f1():
return
def f2():
return None
dis.dis(f1)
dis.dis(f2)
如果运行它,您将看到每个函数的编译版本是相同的:
> python x.py
4 0 LOAD_CONST 0 (None)
3 RETURN_VALUE
7 0 LOAD_CONST 0 (None)
3 RETURN_VALUE
我不知道“leetcode”是什么,但它显然不会产生具有统计意义的执行时间数据。我会像躲避瘟疫一样避开它。