您的位置:首页 > 编程语言 > Python开发

python实现二叉树以及二叉树的遍历--1(面向对象的方法实现)

2017-10-11 14:51 996 查看
#树

class BTNode(object):

    def __init__(self,data,lchild=None,rchild=None):

        self.data=data

        self.lchild=lchild

        self.rchild=rchild

        

class BTNode_T(object):

    def __init__(self,node=None):

        self.root=node

#广度搜索方法创建树    

    def wid_insert(self,data):

        node=BTNode(data)

        

        if self.root is None:

            self.root=node

            return

        queue=[self.root]

        while queue:

            cur=queue.pop(0)

            if cur.lchild is not None:

                queue.append(cur.lchild)

            else:

                cur.lchild=node

                return

            if cur.rchild is not None:

                queue.append(cur.rchild)

            else:

                cur.rchild=node

                return

    ''' 广度遍历(层次遍历) '''                

    def wid_travel(self):

        if self.root is None:

            return ' '

        queue=[self.root]

        while queue:

            cur=queue.pop(0)

            print cur.data,

            if cur.lchild is not None:

                queue.append(cur.lchild)

            if cur.rchild is not None:

                queue.append(cur.rchild)

        return ' '

    ''' 先序遍历(深度遍历):根左右 '''               

    def pre_travel(self,node):

        if node is None:

            return ' '

        print node.data,

        self.pre_travel(node.lchild)

        self.pre_travel(node.rchild)

        return  ' '

    ''' 中序遍历(深度遍历):左根右 '''      

    def mid_travel(self,node):

        if node is None:

            return ' '

        self.mid_travel(node.lchild)

        print node.data,

        self.mid_travel(node.rchild)

        return  ' '

    '''后序遍历(深度遍历):左右根 '''

    def post_travel(self,node):

        if node is None:

            return ' '

        self.post_travel(node.lchild)

        self.post_travel(node.rchild)

        print node.data,

        return  ' '

tree=BTNode_T()

tree.wid_insert(0)

tree.wid_insert(1)

tree.wid_insert(2)

tree.wid_insert(3)

print '二叉树'

print '广度遍历:',tree.wid_travel()

print '先序遍历:',tree.pre_travel(tree.root)

print '中序遍历:',tree.mid_travel(tree.root)

print '后序遍历:',tree.post_travel(tree.root)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息