Skip to content

Commit 0d58f29

Browse files
committed
前序,中序,后序,层序
1 parent 02df2e3 commit 0d58f29

File tree

3 files changed

+96
-0
lines changed

3 files changed

+96
-0
lines changed

README.md

+11
Original file line numberDiff line numberDiff line change
@@ -534,3 +534,14 @@ pip install matplotlib
534534
```
535535
![](https://github.com/LockGit/Py/blob/master/img/svm.png)
536536

537+
538+
### (前序,中序,后序,层序) btree.py
539+
```
540+
➜ Py git:(master) ✗ python btree.py
541+
前序遍历: root A C D F G B E
542+
中序遍历: C F D G A root B E
543+
后序遍历: F G D C A E B root
544+
层序遍历: root A B C E D F G
545+
构造树结构如下图
546+
```
547+
![](https://github.com/LockGit/Py/blob/master/img/btree.png)

btree.py

+85
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
#!/usr/bin/env python
2+
# encoding: utf-8
3+
# author: Lock
4+
# time: 2018/1/24 00:38
5+
class BTree:
6+
def __init__(self, value):
7+
self.left = None
8+
self.data = value
9+
self.right = None
10+
11+
def insertLeft(self, value):
12+
self.left = BTree(value)
13+
return self.left
14+
15+
def insertRight(self, value):
16+
self.right = BTree(value)
17+
return self.right
18+
19+
def show(self):
20+
print self.data,
21+
22+
23+
def preorder(node):
24+
if node.data:
25+
node.show()
26+
if node.left:
27+
preorder(node.left)
28+
if node.right:
29+
preorder(node.right)
30+
31+
32+
def inorder(node):
33+
if node.data:
34+
if node.left:
35+
inorder(node.left)
36+
node.show()
37+
if node.right:
38+
inorder(node.right)
39+
40+
41+
def postorder(node):
42+
if node.data:
43+
if node.left:
44+
postorder(node.left)
45+
if node.right:
46+
postorder(node.right)
47+
node.show()
48+
49+
50+
def layerorder(node):
51+
stack = [node]
52+
while len(stack):
53+
node = stack.pop(0)
54+
if node.data:
55+
node.show()
56+
if node.left:
57+
stack.append(node.left)
58+
if node.right:
59+
stack.append(node.right)
60+
61+
62+
if __name__ == "__main__":
63+
Root = BTree("root")
64+
A = Root.insertLeft("A")
65+
C = A.insertLeft("C")
66+
D = C.insertRight("D")
67+
F = D.insertLeft("F")
68+
G = D.insertRight("G")
69+
B = Root.insertRight("B")
70+
E = B.insertRight("E")
71+
72+
print "前序遍历:",
73+
preorder(Root)
74+
75+
print ""
76+
print "中序遍历:",
77+
inorder(Root)
78+
79+
print ""
80+
print "后序遍历:",
81+
postorder(Root)
82+
83+
print ""
84+
print "层序遍历:",
85+
layerorder(Root)

img/btree.png

71.1 KB
Loading

0 commit comments

Comments
 (0)