我试图执行BST的有序遍历而不进行递归。
在特定的代码行,我得到了错误,代码:
最初我定义为:
out=[]
elif stack!=[]:
current=stack.pop()
out+=(current.val)
current=current.right
Error:
Traceback (most recent call last):
File "main.py", line 224, in
Z = obj.inorderTraversal(A)
File "/tmp/judge/solution.py", line 16, in inorderTraversal
out+=(current.val)
TypeError: 'int' object is not iterable
然后我改变了out + =(current.val)到out.append(current.val),它起作用。
任何人都可以帮助我理解吗?
基本上,这两个语句的区别是什么?
带有追加,您可以指定插入一个元素,而带有+ =则可以加入两个列表。有关更多详细信息,请参见https://docs.python.org/3/tutorial/datastructures.html。
在这种情况下,您将+ =与int一起使用,正确的语法为out += [current.val]
或out.append(current.val)
(可读性更高。)>