python构建二叉树_python实现二叉树

在我们解释二叉树之前,首先来看一下树的概念

一、树的概念

树也是一种数据结构,大家可以想象一下,自然界中的树木,树木的叶子就相当于树的结点,那树其实就是N(N>0)个结点的有限集合。其中有一个特殊的结点叫做树根,这个结点没有前趋,除了根结点之外,其余的结点可以看成是M(M>=0)个互不相交的集合,每一个集合又可以看成是一棵树,也就是根的子树。也就是说,树其实就是由有限个子树组成,而且没有次序之分。如下图一所示。

图一

如上图所示,这个树组成了一个有限的集合T={A,B,C,D,E,F,G,H},其中A结点是根结点,它有两颗子树,T1 = {B,D,E,F},以及T2 = {C,G,H},这两个子集互不相交。而T1该子树的根结点是B,它又有子集{D},{E},{F},同理可论证T2.

二、二叉树的概念

首先要注意一个知识点就是二叉树并不是树的特殊情形,他们是两种不同的数据结构。其次,二叉树可以为空,也可以只有左子树,或者右子树,亦或者由一个根结点加上左右两个互不相交的二叉树构成。

下面我们用python实现二叉树,来看看二叉树的实现原则:

1、第一个建立的元素是根结点

接下来我们再来看看二叉树的几种遍历方法:

树的遍历分为深度优先遍历和广度优先遍历,前者有前序、中序、后序,后者有层次遍历。一般来说,深度优先用递归,广度优先用队列。

图2

1、前序遍历

前序遍历是先遍历根结点,再遍历左子树,最后才遍历右子树。根据前序遍历,访问顺序为A->B->D-G,C->E>H,F->I

2、中序遍历

中序遍历是先遍历左子树,再遍历根结点,最后才遍历右子树。访问顺序为G->D->B->A,H->E->C,F->I

3、后序遍历

后续遍历是先遍历左子树,再遍历右子树,最后才遍历根结点。访问顺序是G->D->B->H->E-I->F->C->A

4、层次遍历

层次遍历是指从二叉树的第一层(根结点)开始,从上至下逐层遍历,在同一层中,则按从左到右的顺序对结点逐个访问,访问顺序是A->B->C->D->E->F->G->H->I

下面是实现前3种遍历的python代码,使用遍历

而对于层次遍历需要使用队列,可按如下步骤进行:(1)初始化一个队列

(2)二叉树的根结点放入队列

(3)重复步骤(4)-(7)直至队列为空

(4)从队列中取出一个结点x

(5)访问结点x

(6)如果x存在左子结点,将左子结点放入队列

(7)如果x 存在右子结点,将右子结点放入队列

下面是代码实现:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值