标签:node None cur python 中序 tree order 二叉树 self
class Node(): "节点" def __init__(self, elem): self.elem = elem self.lchild = None self.rchild = None class Tree(): "二叉树" 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 pre_order(self, node): "先序遍历:根-左-右" if node is None: return print(node.elem, end=" ") #根 self.pre_order(node.lchild) #左 self.pre_order(node.rchild) #右 def in_order(self, node): "中序遍历:左-根-右" if node is None: return self.in_order(node.lchild) # 左 print(node.elem, end=" ") #根 self.in_order(node.rchild) #右 def post_order(self, node): "后序遍历:左-右-根" if node is None: return self.post_order(node.lchild) # 左 self.post_order(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) print("层次") tree.breadth_travel() print("\n先序") tree.pre_order(tree.root) print("\n中序") tree.in_order(tree.root) print("\n后序") tree.post_order(tree.root)
标签:node,None,cur,python,中序,tree,order,二叉树,self 来源: https://www.cnblogs.com/yi918/p/15100734.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。