class Node(object):
def __init__(self, item):
self.elem = item
self.lchild = None
self.rchild = None
class Tree(object):
"""二叉樹"""
def __init__(self):
self.root = None
def add(self, item):
node = Node(item)
if self.root is None:
self.root = node
return
queue = [self.root]
while queue:
cur_node = queue.pop(0)
if cur_node.lchild is None:
cur_node.lchild = node
return
else:
queue.append(cur_node.lchild)
if cur_node.rchild is None:
cur_node.rchild = node
return
else:
queue.append(cur_node.rchild)
def breadth_travel(self):
"""廣度遍歷"""
if self.root is None:
return
queue = [self.root]
while queue:
cur_node = queue.pop(0)
print(cur_node.elem, end = " ")
if cur_node.lchild is not None:
queue.append(cur_node.lchild)
if cur_node.rchild is not None:
queue.append(cur_node.rchild)
def preorder(self, node):
"""先序遍歷"""
#遍歷整棵樹,先把根節(jié)點(diǎn)node傳進(jìn)來
if node is None:
return
print(node.elem, end = " ") #因?yàn)槭窍刃虮闅v,就應(yīng)該把根節(jié)點(diǎn)的元素打印出來
self.preorder(node.lchild) #然后再判斷根節(jié)點(diǎn)的左子樹,把它當(dāng)作子樹對(duì)待
self.preorder(node.rchild) #然后再處理右子樹,用遞歸的方法
def inorder(self, node):
"""中序遍歷"""
if node is None:
return
self.inorder(node.lchild)
print(node.elem, end = " ")
self.inorder(node.rchild)
def postorder(self, node):
"""后序遍歷"""
if node is None:
return
self.postorder(node.lchild)
self.postorder(node.rchild)
print(node.elem, end = " ")
if __name__ == "__main__":
tree = Tree()
tree.add(0)
tree.add(1)
tree.add(2)
tree.add(3)
tree.add(4)
tree.add(5)
tree.add(6)
tree.add(7)
tree.add(8)
tree.add(9)
tree.breadth_travel()
print(" ")
tree.preorder(tree.root)
print(" ")
tree.inorder(tree.root)
print(" ")
tree.postorder(tree.root)
BFS & DFS
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- BFS循環(huán)常用比較參數(shù):queue.size() 107. Binary Tree Level Order Tra...
- Graph 的例子包括 City Map Power Distribution Network Water Dis...
- 因?yàn)橐浦睠SK得寫快速傅里葉變換的算法,還是二維的,以前在pc平臺(tái)上只需調(diào)用庫(kù)就可以了,只是有點(diǎn)印象原信號(hào)和變換...
- 專題地址:https://vjudge.net/contest/65959#overview BFS模板 A - ...
- 再見了旅行的人, 如果還活著的話, 我們?cè)贂?huì)。 快樂的去活吧, 不要絕望, 失敬了。 這是一碗太宰治拉面。我努力喝...