#这个类是用于定义树的基本结构,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)


下图为本示例的一个二叉树的结构图,上面的代码就是实现下图的存储方式

wKioL1iIe2KBhsGYAACH-vLluYo881.jpg-wh_50