File tree 3 files changed +96
-0
lines changed
3 files changed +96
-0
lines changed Original file line number Diff line number Diff line change @@ -534,3 +534,14 @@ pip install matplotlib
534
534
```
535
535
![ ] ( https://github.com/LockGit/Py/blob/master/img/svm.png )
536
536
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 )
Original file line number Diff line number Diff line change
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 )
You can’t perform that action at this time.
0 commit comments