1 python queue binary-tree breadth-first-search
任何人都可以帮助我使用 python 中的 bfs 代码吗?它只是打印自我价值,而不是整棵树。
from queue import *
class BinaryTree:
def __init__(self,info,left,right):
self.info = info
self.left = left
self.right = right
def bfs(self):
queue = Queue()
queue.put(self)
while not queue.empty():
self = queue.get()
print(self.info)
if self.left:
queue.put(self.left)
if self.right:
queue.put(self.right)
return
nine = BinaryTree("9",None,None)
eleven = BinaryTree("11",None,None)
two = BinaryTree("2",eleven,nine)
one = BinaryTree("1",None,None)
seven = BinaryTree("7",one,None)
five = BinaryTree("5",seven,two)
three = BinaryTree("3",None,None)
six = BinaryTree("6",None,None)
four = BinaryTree("4",None,six)
eight = BinaryTree("8",four,three)
ten = BinaryTree("10",eight,five)
ten.bfs()
Run Code Online (Sandbox Code Playgroud)
我的答案只是“10”,而不是整棵树。我找不到错误。
除了return声明之外,还有一些错误的缩进。
from queue import *
class BinaryTree:
def __init__(self,info,left,right):
self.info = info
self.left = left
self.right = right
def bfs(self):
queue = Queue()
queue.put(self)
while not queue.empty():
self = queue.get()
print(self.info)
if self.left:
queue.put(self.left)
if self.right:
queue.put(self.right)
nine = BinaryTree("9",None,None)
eleven = BinaryTree("11",None,None)
two = BinaryTree("2",eleven,nine)
one = BinaryTree("1",None,None)
seven = BinaryTree("7",one,None)
five = BinaryTree("5",seven,two)
three = BinaryTree("3",None,None)
six = BinaryTree("6",None,None)
four = BinaryTree("4",None,six)
eight = BinaryTree("8",four,three)
ten = BinaryTree("10",eight,five)
ten.bfs()
Run Code Online (Sandbox Code Playgroud)
输入图:
输出:
10
8
5
4
3
7
2
6
1
11
9
Run Code Online (Sandbox Code Playgroud)
参考: https : //docs.python.org/3/library/queue.html#queue.Queue.get