二叉树的基本实现
1 from collections import deque 2 3 4 class Tree(object): 5 class TreeNode(object): 6 def __init__(self, data): 7 self.data = data 8 self.lchild = None 9 self.rchild = None 10 self.parent = None 11 12 def __str__(self): 13 if self.data: 14 return self.data 15 16 def __init__(self): 17 self.root = None 18 19 def pre_ord(self, root): 20 if not root: 21 return 22 else: 23 print(root, end=',') 24 self.pre_ord(root.lchild) 25 self.pre_ord(root.rchild) 26 27 def med_ord(self, root): 28 if not root: 29 return 30 else: 31 self.med_ord(root.lchild) 32 print(root, end=',') 33 self.med_ord(root.rchild) 34 35 def post_ord(self, root): 36 if not root: 37 return 38 else: 39 self.med_ord(root.lchild) 40 self.med_ord(root.rchild) 41 print(root, end=',') 42 43 @staticmethod 44 def level_ord(root): 45 dq = deque() 46 dq.append(root) 47 while len(dq) > 0: 48 cur_node = dq.popleft() 49 print(cur_node, end=',') 50 if cur_node: 51 if cur_node.lchild: 52 dq.append(cur_node.lchild) 53 if cur_node.rchild: 54 dq.append(cur_node.rchild) 55 56 57 if __name__ == '__main__': 58 a = Tree.TreeNode('A') 59 b = Tree.TreeNode('B') 60 c = Tree.TreeNode('C') 61 d = Tree.TreeNode('D') 62 e = Tree.TreeNode('E') 63 f = Tree.TreeNode('F') 64 g = Tree.TreeNode('G') 65 h = Tree.TreeNode('H') 66 i = Tree.TreeNode('I') 67 tree = Tree() 68 tree.root = a 69 a.lchild = b 70 a.rchild = c 71 b.lchild = d 72 c.lchild = e 73 c.rchild = f 74 d.lchild = g 75 e.lchild = h 76 e.rchild = i 77 78 tree.pre_ord(tree.root) 79 print('\n---------------------') 80 tree.med_ord(tree.root) 81 print('\n---------------------') 82 tree.post_ord(tree.root) 83 print('\n---------------------') 84 tree.level_ord(tree.root)
树的先中后序遍历是根据父节点的先后顺序决定的,
PS:先序+后序遍历不能确定一个树!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人