【发布时间】:2021-04-16 23:35:24
【问题描述】:
我正在寻找使用堆栈(不是队列!)在 Python 中实现二叉树的 BFS(广度优先搜索)。
class Stack:
def __init__(self):
self.data = []
def Empty(self):
return self.data == []
def Push(self, x):
self.data.append(x)
def Pop(self):
return self.data.pop()
def Peek(self):
return self.data[len(self.data)-1]
def Size(self):
return len(self.data)
class Node:
def __init__(self, data, left, right):
self.data = data
self.l_node = left
self.r_node = right
class Tree:
def __init__(self):
self.root= None
def bfs_stack(self, node):
pass
t = Tree()
t.root = Node("1")
t.root.l_node = Node("2")
t.root.l_node.l_node = Node("4")
t.root.l_node.r_node = Node("5")
t.root.l_node.r_node.l_node = Node("8")
t.root.r_node = Node("3")
t.root.r_node.l_node = Node("6")
t.root.r_node.r_node = Node("7")
t.root.r_node.r_node.l_node = Node("9")
t.root.r_node.r_node.l_node.l_node = Node("11")
t.root.r_node.r_node.r_node = Node("10")
我创建了 Stack() 类来使用。 我尝试将递归和堆栈推送结合起来,但我没有想法。
队列实现非常简单,但对我来说拥有一个 Stack() 实现很重要。
【问题讨论】:
标签: python stack binary-tree breadth-first-search tree-traversal