利用Python创建二叉树,并实现前、中、后序遍历

利用Python创建二叉树,并实现前、中、后序遍历

先构建链表块:

class TreeNode:
     def __init__(self, x):
         self.val = x
         self.left = None
         self.right = None

以链表的方式建立二叉树的主程序如下

def Crate_tree(root,val):
    newnode=TreeNode(val)
    newnode.left=None
    newnode.right=None
    if root==None:
        root=newnode
        return root
    else:
        current=root
        while current !=None:
            backup=current
            if current.val>val:
                current=current.left
            else:
                current=current.right
        if backup.val>val:
            backup.left=newnode
        else:
            backup.right=newnode
        return root

二叉树有3种遍历方法,前序、中序及后序遍历。
前序遍历的步骤如下:
(1):遍历树根
(2):遍历左子树
(3):遍历右子树
代码如下:

def proorder(ptr):
    if ptr != None:
        print(ptr.val, end=' ')
        proorder(ptr.left)
        proorder(ptr.right)

中序遍历的步骤如下:
(1):遍历左子树
(2):遍历树根
(3):遍历右子树
代码如下:

def inorder(ptr):
    if ptr != None:
        inorder(ptr.left)
        print(ptr.val,end=' ')
        inorder(ptr.right)

后序遍历的步骤如下:
(1):遍历左子树
(2):遍历右子树
(3):遍历树根
代码如下:

def postorder(ptr):
    if ptr != None:
        postorder(ptr.left)
        postorder(ptr.right)
        print(ptr.val, end=' ')

记住遍历方法时有一个技巧:前序遍历时print语句写在最前面;中序遍历时print语句写在中间;后序遍历时print语句写在最后面。

最后运行的主程序如下所示:

if __name__=='__main__':
    data=[7,4,1,5,16,8,11,12,15,9,2]
    ptr=None
    for i in range(len(data)):
        ptr=Crate_tree(ptr,data[i])
    print('中序遍历结果:')
    inorder(ptr)
    print('\n前序遍历结果:')
    proorder(ptr)
    print('\n后序遍历结果:')
    postorder(ptr)

运行的结果如下图所示:
在这里插入图片描述
由结果可以看出,中序遍历的就是对数组进行从小到达排序。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值