如果我不检查(如果不是root(,我将收到一个运行时错误。我试着做一些研究,但我不知道为什么。有人能解释一下幕后发生了什么吗?
我收到的运行时错误:
运行时错误消息:第18行:AttributeError:"NoneType"对象没有属性"val">
class TreeNode(object):
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def levelOrderBottom(self, root):
if not root:
return []
que = []
que.append(root)
res = []
while que:
temp = []
for i in range(len(que)):
node = que.pop(0)
temp.append(node.val)
if node.left:
que.append(node.left)
if node.right:
que.append(node.right)
res.append(temp)
return res[::-1]
假设root = None
并通读您的代码。会发生什么?
当while循环开始时,我们将有
que = [None]
res = []
由于que
不为空,while循环将运行。由于len(que) == 1
,for循环也将运行。在第一次迭代中,它将运行node = que.pop(0)
。因此
node = None
在下一行中,您的代码将运行temp.append(node.val)
。这就是错误的原因。None
没有val
属性。当node = None
导致引发AttributeError时,尝试调用node.val
。