二叉树的基本实现

复制代码
 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:先序+后序遍历不能确定一个树!

posted @   Avery_rainys  阅读(28)  评论(0编辑  收藏  举报
编辑推荐:
· 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训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示