1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
#这个类是用于定义树的基本结构,leftjd:左节点,rightjd:右节点,data:数据
class
Tree():
def
__init__(
self
,leftjd
=
0
,rightjd
=
0
,data
=
0
):
self
.leftjd
=
leftjd
self
.rightjd
=
rightjd
self
.data
=
data
#这个类是用于定义一个二叉树
class
Btree():
def
__init__(
self
,base
=
0
):
self
.base
=
base
#这个方法是判断根是否为空
def
empty(
self
):
if
self
.base
=
=
0
:
return
True
else
:
return
False
#这个方法是实现树的前序遍历,遍历方式为:根左右,也就是789
def
qout(
self
,jd):
if
jd
=
=
0
:
#这个if是判节点是否为空,如果是为空则原样返回
return
print
jd.data
self
.qout(jd.leftjd)
self
.qout(jd.rightjd)
#这个方法是实现树的中序遍历,遍历方式为:左根右,也就是879
def
mount(
self
,jd):
if
jd
=
=
0
:
#这个if是判节点是否为空,如果是为空则原样返回
return
self
.mount(jd.leftjd)
print
jd.data
self
.mount(jd.rightjd)
#这个方法是实现树的后序遍历,遍历方式为:左右根,也就是897
def
hout(
self
,jd):
if
jd
=
=
0
:
#这个if是判节点是否为空,如果是为空则原样返回
return
self
.hout(jd.leftjd)
self
.hout(jd.rightjd)
print
jd.data
if
__name__
=
=
"__main__"
:
#注意:在写代码的时候,数据存储进去的时候需要倒过来写,也就是从叶子开始,而不是从根节点开始
jd1
=
Tree(data
=
8
)
#定义节点1,左节点的数据为8,但是这个8节点下面没有左节点和右节点,所以只需要传递一个data进去
jd2
=
Tree(data
=
9
)
base
=
Tree(jd1,jd2,
7
)
x
=
Btree(base)
x.qout(x.base)
x.hout(x.base)
|
下图为本示例的一个二叉树的结构图,上面的代码就是实现下图的存储方式
本文转自 TtrToby 51CTO博客,原文链接:http://blog.51cto.com/freshair/1894225