#这个类是用于定义树的基本结构,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)
下图为本示例的一个二叉树的结构图,上面的代码就是实现下图的存储方式
本文出自 “运维杂谈Q群:223843163” 博客,请务必保留此出处http://freshair.blog.51cto.com/8272891/1894225
原文:http://freshair.blog.51cto.com/8272891/1894225