#这个类是用于定义树的基本结构,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)
下图为本示例的一个二叉树的结构图,上面的代码就是实现下图的存储方式
转载于:https://blog.51cto.com/freshair/1894225