我正在学习使用双端队列来检查两个二叉树是否相同。但是,我不明白为什么n1和n2(作为node1和node2)无法解压。我尝试将它们放入列表和元组中,解包等,但无法成功解包。我想这是别的事。有人可以帮忙吗?这是代码:
def iterative(self, p, q):
q = deque( [p, q] )
while len(q) > 0:
n1, n2 = q.popleft()
if not n1 and not n2: pass
elif not n1 or not n2: return False
else:
if n1.val != n2.val: return False
q.append( [n1.left, n2.left] )
q.append( [n1.right, n2.right] )
return True
问题在于如何初始化双端队列。构造函数需要一个条目序列,并且当您希望条目成为一对时,您需要提供一系列对。但是,您提供了一个包含两个条目的列表,这意味着您的双端队列将以两个条目开头,每个条目都是单个节点而不是一对。
更改此:
q = deque( [p, q] )
对此:
q = deque( [[p, q]] )