Python 为什么按级别顺序遍历树会导致值错误?
我正在编写一个函数来解决以下问题: 给定二叉树的根,返回其节点值的级别顺序遍历(即从左到右,逐级) e、 g.输入:root=[3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] " 这是我的密码:Python 为什么按级别顺序遍历树会导致值错误?,python,tree,Python,Tree,我正在编写一个函数来解决以下问题: 给定二叉树的根,返回其节点值的级别顺序遍历(即从左到右,逐级) e、 g.输入:root=[3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] " 这是我的密码: class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def levelOrder(self, root: TreeNode):
queue = deque([root])
output = []
if not root:
return output
while queue:
root = queue.popleft()
output.append(root.val)
queue.append(root.left)
queue.append(root.right)
return output
我似乎得到了一个错误:行output.append(root.val)的“Nonetype没有属性val”。你知道为什么吗
我以为我在根为空时覆盖了边缘情况
另外,我知道我的代码并不能解决这个问题,因为它不能通过不将每个级别划分为不同的数组来解决“级别”问题
但是我想先看看我的代码是否以正确的顺序遍历树
root.left
或root.right
可以是None
,如果不是root子句,您可以将它们附加到队列
之后。当然!Thankso在root=queue.popleft()行之后,如果我添加一个“if root==None:continue”是否有效?为什么要问?你试过了吗?