Skip to content

Commit 64b56ca

Browse files
authored
Add files via upload
1 parent 65d9504 commit 64b56ca

File tree

2 files changed

+152
-0
lines changed

2 files changed

+152
-0
lines changed

08-1树的类.py

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# coding :utf-8
2+
# 树是链表的扩充
3+
4+
class Node(object):
5+
def __init__(self,item) :
6+
self.elem = item
7+
self.lchild = None # 左孩子
8+
self.rchild = None # 又孩子
9+
10+
class Tree(object):
11+
#二叉树
12+
def __init__(self):
13+
self,root = None # 跟节点
14+
15+
16+
# 类似队列
17+
def add(self,item):
18+
node = Node(item)
19+
queue = [self.root] # 初始化
20+
21+
if self.root is None:
22+
self.root = node
23+
return
24+
25+
while queue:
26+
cur_node = queue.pop(0)
27+
if cur_node.lchild is None:
28+
cur_node.lchild = node
29+
return
30+
else:
31+
queue.append(cur_node.lchild)
32+
33+
if cur_node.rchild is None:
34+
cur_node.rchild = node
35+
return
36+
else:
37+
queue.append(cur_node.rchild)
38+
39+
40+
41+
42+
if __name__ == "__main__":
43+
44+
tree = Tree()
45+

08-2树的遍历.py

+107
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
# coding :utf-8
2+
# 树是链表的扩充
3+
4+
class Node(object):
5+
def __init__(self,item) :
6+
self.elem = item
7+
self.lchild = None # 左孩子
8+
self.rchild = None # 又孩子
9+
10+
class Tree(object):
11+
#二叉树
12+
def __init__(self):
13+
self.root = None # 跟节点
14+
15+
16+
# 类似队列 先进先出
17+
def add(self,item):
18+
node = Node(item)
19+
queue = [self.root] # 初始化
20+
21+
if self.root is None:
22+
self.root = node
23+
return
24+
25+
while queue:
26+
cur_node = queue.pop(0)
27+
if cur_node.lchild is None:
28+
cur_node.lchild = node
29+
return
30+
else:
31+
queue.append(cur_node.lchild)
32+
33+
if cur_node.rchild is None:
34+
cur_node.rchild = node
35+
return
36+
else:
37+
queue.append(cur_node.rchild)
38+
39+
40+
41+
# ========广度优先遍历=============
42+
def breadth_travel(self):
43+
'''广度遍历'''
44+
if self.root is None:
45+
return
46+
queue = [self.root]
47+
while queue:
48+
cur_node = queue.pop(0)
49+
print(cur_node.elem)
50+
if cur_node.lchild is not None:
51+
queue.append(cur_node.lchild)
52+
if cur_node.rchild is not None:
53+
queue.append(cur_node.rchild)
54+
55+
56+
# ========深度优先遍历=============
57+
def preorder(self,node):
58+
##先序遍历##
59+
if node is None:
60+
return
61+
print(node.elem)
62+
self.preorder(node.lchild)
63+
self.preorder(node.rchild)
64+
65+
def inorder(self,node):
66+
##中序遍历##
67+
if node is None:
68+
return
69+
self.inorder(node.lchild)
70+
print(node.elem)
71+
self.inorder(node.rchild)
72+
73+
def postorder(self,node):
74+
##后序遍历##
75+
if node is None:
76+
return
77+
self.postorder(node.lchild)
78+
self.postorder(node.rchild)
79+
print(node.elem)
80+
81+
82+
83+
84+
85+
if __name__ == "__main__":
86+
87+
tree = Tree()
88+
tree.add(0)
89+
tree.add(1)
90+
tree.add(2)
91+
tree.add(3)
92+
tree.add(4)
93+
tree.add(5)
94+
tree.add(6)
95+
tree.add(7)
96+
tree.add(8)
97+
tree.add(9)
98+
tree.breadth_travel()
99+
print("")
100+
tree.preorder(tree.root)
101+
print("")
102+
tree.inorder(tree.root)
103+
print("")
104+
tree.postorder(tree.root)
105+
print("")
106+
# tree.breadth_travel()
107+

0 commit comments

Comments
 (0)