测试用例单独通过,但在提交时,第一个输出仅保留在列表中。
不能把我的头缠绕在它周围。发生了什么事情?
class Solution:
l=[]
def inorderTraversal(self, root: TreeNode) -> List[int]:
if root is None:
return self.l
else:
if root.left:
self.inorderTraversal(root.left)
self.l.append(root.val)
if root.right:
self.inorderTraversal(root.right)
return self.l
***Test Case***
> Your input [1]
Output [1]
Expected [1]
**Submitted**
> Wrong Answer Details
Input []
Output [1,3,2]
Expected []
我认为问题是您没有在构造函数中初始化l
__init__(self)
通过以您的方式声明l
,它将由Solution
的所有实例共享。这很可能是您的问题,因为测试代码可能会为每个情况实例化一个新Solution
。
您可以将以下内容添加到解决方案类中,以确保 l 不会被Solution
实例共享:
class Solution:
def __init__(self):
self.l=[]
如果仍然不起作用,则类解决方案可能会实例化一次,并且可能会在每个测试输入上调用方法inorderTraversal
在这种情况下,您必须稍微更改inorderTraversal
:
def inorderTraversal(self, root: TreeNode) -> List[int]:
result = []
if root is None:
return result
else:
if root.left:
result.extend(self.inorderTraversal(root.left))
result.append(root.val)
if root.right:
result.extend(self.inorderTraversal(root.right))
return result
您可以将代码简化为:
def inorderTraversal(self, root: TreeNode) -> List[int]:
result = []
if root.left:
result.extend(self.inorderTraversal(root.left))
result.append(root.val)
if root.right:
result.extend(self.inorderTraversal(root.right))
return result