Python数据结构----二叉树的前序,中序,后序,3种遍历方式

代码:

class TreeNode(object):
    def __init__(self,data,left=0,right=0):
        self.data=data
        self.left=left
        self.right=right


class BTree(object):
    def __init__(self,root=0):
        self.root=root
    #前序遍历,根节点-》左子树-》右子树
    def preOrder(self,treenode):
        if treenode is 0:
            return
        print(treenode.data)
        self.preOrder(treenode.left)      #递归调用  左子树
          self.preOrder(treenode.right)     #递归调用  右子树

    # 中序遍历,左子树-》根节点-》右子树
    def  inOrder(self, treenode):
        if treenode is 0:
            return
        self.inOrder(treenode.left)
        print(treenode.data)
        self.inOrder(treenode.right)

    # 前序遍历,左子树-》右子树-》根节点
    def postOrder(self,treenode):
        if treenode is 0:
            return
        self.postOrder(treenode.left)
        self.postOrder(treenode.right)
        print(treenode.data)

if __name__=='__main__':
    #定义树节点
    n1=TreeNode(data=2)
    n7 = TreeNode(7)
    n4 = TreeNode(4, 0, n7)
    n2=TreeNode(2,n4,0)
    n5 = TreeNode(5)
    n8 = TreeNode(8)
    n6 = TreeNode(6, n8, 0)
    n3=TreeNode(3,n5,n6)
    root=TreeNode(1,n2,n3)
    #实例化一个树
    bt=BTree(root)
    print('preOrder'.center(50,'-'))
    print(bt.preOrder(bt.root))

    print('inOrder'.center(50, '-'))
    print(bt.inOrder(bt.root))

    print('postOrder'.center(50, '-'))
    print(bt.postOrder(bt.root))
注意: 递归调用中每一层节点的退出

猜你喜欢

转载自blog.csdn.net/beifangdefengchuilai/article/details/80936928
今日推荐