在python树类中放置levelordertraversal方法

在python树类中放置levelordertraversal方法,python,tree,Python,Tree,我原以为上面的代码会打印5 3 6 2 4,但实际上它给出了一个错误:AttributeError:“非类型”对象没有属性“数据”。我无法找出代码有什么问题。当节点。左或节点。右为无,q.append(节点。左)下面的行将Nones添加到q中q[0]。当None位于索引0时,数据将导致错误。您需要首先检查它们并阻止添加Nones,或者在执行q[0]之前检查它们。数据。我真的忘记在那里添加条件了。谢谢提醒 class Node: def __init__(self,data): self.

我原以为上面的代码会打印5 3 6 2 4,但实际上它给出了一个错误:AttributeError:“非类型”对象没有属性“数据”。我无法找出代码有什么问题。

节点。左
节点。右
q.append(节点。左)
下面的行将
None
s添加到
q
中<代码>q[0]。当
None
位于索引
0
时,数据将导致错误。您需要首先检查它们并阻止添加
None
s,或者在执行
q[0]之前检查它们。数据
。我真的忘记在那里添加条件了。谢谢提醒
class Node:
def __init__(self,data):
    self.data=data
    self.left=None
    self.right=None
class Tree:
    def __init__(self,data):
        self.root=Node(data)
    def levelOrderTraversal(self):
        if self.root==None:
            return
        q,l=[],[]
        q.append(self.root)
        while len(q):
            l.append(q[0].data)
            node=q.pop(0)
            q.append(node.left)
            q.append(node.right)
        print(*l)
tree=Tree(5)
tree.root.left=Node(3)
tree.root.right=Node(6)
tree.root.left.left=Node(2)
tree.root.left.right=Node(4)
tree.levelOrderTraversal()