python算法与数据结构-二叉树的遍历
生活随笔
收集整理的這篇文章主要介紹了
python算法与数据结构-二叉树的遍历
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
廣度優先遍歷和深度優先遍歷代碼如下所示:
# coding=utf-8class Node(object):#盡量不加3個引號的注釋了容易報錯def __init__(self, item):self.elem = itemself.lchild = Noneself.rchild = Noneclass Tree(object):def __init__(self):self.root = Nonedef add(self,item):node = Node(item)#有一種特殊情況,一上來根節點就是空的情況if self.root is None:self.root = nodereturnqueue = [self.root]#主要queue不為空,就一直循環while queue:cur_node = queue.pop(0)if cur_node.lchild is None:cur_node.lchild = nodereturnelse:queue.append(cur_node.lchild)if cur_node.rchild is None:cur_node.rchild = nodereturnelse:queue.append(cur_node.rchild)def breadth_travel(self):"""廣度遍歷"""if self.root is None:returnqueue = [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):#先序遍歷 根左右if node is None:returnprint(node.elem,end=" ")self.preorder(node.lchild)self.preorder(node.rchild)def inorder(self,node):# 中序遍歷 左中(根)右if node is None:returnself.inorder(node.lchild)print(node.elem, end=" ")self.inorder(node.rchild)def postorder(self,node):# 后序遍歷 左右中(根)if node is None:returnself.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)print(" ")總結
以上是生活随笔為你收集整理的python算法与数据结构-二叉树的遍历的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: A股网红经济板块概念股 以下几家都受到机
- 下一篇: 工商信用卡激活流程