在python树类中放置levelordertraversal方法
我原以为上面的代码会打印5 3 6 2 4,但实际上它给出了一个错误:AttributeError:“非类型”对象没有属性“数据”。我无法找出代码有什么问题。当在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.
节点。左或节点。右为无,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()