树与图的简单遍历算法
图的遍历算法

1图的遍历问题在实践中常常遇到这样的问题:给定n个点,从任一点出发对所有的点访问一次并且只访问一次。
如果用图中的顶点表示这些点,图中的边表示可能的连接,那么这个问题就可以表示成图的遍历问题,即从某个顶点出发,沿着某条搜索路径对图中每个顶点各做一次且仅做一次访问。
图的遍历操作和树的遍历操作功能相似,是图的一种基本操作,图的许多其它操作都是建立在遍历操作的基础上。
由于图结构本身的复杂性,所以图的遍历操作也比较复杂,主要表现在以下几个方面:(1) 在图结构中,没有一个确定的首结点,图中任意一个顶点都可以作为第一个被访问的结点。
(2) 在非连通图中,从一个顶点出发,只能够访问它所在的连通分量上的所有顶点,因此,还需要考虑如何选取下一个出发点以访问图中其余的连通分量。
(3) 在图结构中,如果有回路存在,那么一个顶点被访问后,有可能沿回路又回到该顶点。
⑷在图结构中,一个顶点可以和其它多个顶点相连,当这样的顶点访问过后,存在如何选取下一个要访问的顶点的问题。
基于以上分析,图的遍历方法目前有深度优先搜索(DFS)和广度优先搜索(BFS)两种算法。
下面将介绍两种算法的实现思路,分析算法效率并编程实现。
1.1深度优先搜索算法深度优先搜索算法是树的先根遍历的推广,它的实现思想是:从图G的某个顶点V o出发,访问V o,然后选择一个与V o相邻且没被访问过的顶点V i访问,再从V i出发选择一个与V i相邻且未被访问的顶点V j进行访问,依次继续。
如果当前被访问过的顶点的所有邻接顶点都已被访问,贝U退回已被访问的顶点序列中最后一个拥有未被访问的相邻顶点的顶点W,从W出发按同样的方法向前遍历,直到图中所有顶点都被访问。
其递归算法如下:Boolean visited[MAX_VERTEX_NUM]; // 访问标志数组Status (*VisitFunc)(int v); //VisitFunc是访问函数,对图的每个顶点调用该函数void DFSTraverse (Graph G Status(*Visit)(i nt v)){VisitF unc = Visit;for(v=0; vvG.vex num; ++v)visited[v] = FALSE; //访问标志数组初始化for(v=0; v<G .vex num; ++v)if(!visited[v])DFS(G v); //对尚未访问的顶点调用DFS}void DFS(Graph G int v){ //从第v个顶点出发递归地深度优先遍历图Gvisited[v]=TRUE; VisitFunc(v); // 访问第v 个顶点for(w=FirstAdjVex(G ,v); w>=0;w=NextAdjVex(G ,v,w))//FirstAdjVex返回v的第一个邻接顶点,若顶点在G中没有邻接顶点,则返回空(0)。
树与森林的遍历

第十七讲
∑p ×I
i =1 i
7
i
= 0.40 × 1 + 0.30 × 2 + 0.15 × 3 + 0.05 × 5 + 0.04 × 5 + 0.03 × 5 + 0.03 × 5 = 2.20
第十七讲
举例:数据传送中的二进制编码。 要传送数据 state, seat, act, tea, cat, set, a, eat, 如何使传 送的长度最短? 首先规定二叉树的构造为左走0,右走1 ,如图6.31所示。 为了保证长度最短, 先看字符出现的次数, 然后将出现 次数当作权, 如图6.32所示。
第十七讲
2. 森林的遍历 森林的遍历 森林的遍历方法主要有以下三种: 1) 先序遍历 若森林非空, 则遍历方法为: (1) 访问森林中第一棵树的根结点。 (2) 先序遍历第一棵树的根结点的子树森林。 (3) 先序遍历除去第一棵树之后剩余的树构成的森林。 例如, 图6.24(a)中森林的先序遍历序列为ABCDEFGHIJ。
第十七讲 作业:
1.二叉树的层次遍历算法(二叉链表存储); 2.求二叉树中最大结点值(二叉链表存储)。
第十七讲
哈夫曼树及其应用
第十七讲
1. 哈夫曼树
1. 路径和路径长度 路径和路径长度 路径是指从一个结点到另一个结点之间的分支序列, 路径 路径长度是指从一个结点到另一个结点所经过的分支数目。 路径长度 树的路径长度是从树根到每一结点的路径长度之和。 树的路径长度
图6.30 构造哈夫曼树示例
第十七讲
表 6 – 3 指令的哈夫曼编码
指令 I1 I2 I3 I4 I5 I6 I7 使用频率(Pi) 0 10 110 11100 11101 11110 11111
第15讲图的遍历

V6
V8
V8
V7
V5 深度优先生成树
V8 V1
V2
V3
V4 V5 V6 V7
V8 广度优先生成树
27
例A
B
CD E
F
GH
I
K
J
L
M
A
D
G
LCF
KI E
H M
JB
深度优先生成森林
28
二、图的连通性问题
▪1、生成树和生成森林
▪ 说明
G
▪ 一个图可以有许多棵不同的生成树
KI
▪ 所有生成树具有以下共同特点:
g.NextAdjVex(v, w))
{
if (g.GetTag(w) == UNVISITED)
{
g.SetTag(w, VISITED);
g.GetElem(w, e);
Visit(e);
q.InQueue(w);
}
}}}
24
一、图的遍历 两种遍历的比较
V0
V1 V4
V0
V1 V4
V3
V2 V5
16
一、图的遍历
广度优先遍历序列?入队序列?出队序列?
V1
V2
V3
V1
V4
V5 V6
V7
V8
遍历序列: V1
17
一、图的遍历
广度优先遍历序列?入队序列?出队序列?
V1
V2
V3
V2 V3
V4
V5 V6
V7
V8
遍历序列: V1 V2 V3
18
一、图的遍历
广度优先遍历序列?入队序列?出队序列?
V1
V2
离散数学 图论-树

中序遍历(次序:左-根-右) 前序遍历(次序:根-左-右) 后序遍历(次序:左-右-根) b 中序遍历: c b e d g f a I k h j 前序遍历: a b c d e f g h i k j 后序遍历: c e g f d b k i j h a
例:给定二叉树,写出三种访问 结点的序列
是否为根树
(a) (no)
(b) (no)
(c) (yes)
从树根到T的任意顶点v的通 路(路径)长度称为v的层数。 v5的层数为 层。
层数最大顶点的层数称为树 高.将平凡树也称为根树。 右图中树高为( )。
v1
v2 v3
v4 v8v5Fra bibliotekv6v7 v10
v9
在根树中,由于各有向边的方向是一 致的,所以画根树时可以省去各边上的所 有箭头,并将树根画在最上方.
等长码:0-000;1-001;2-010;3-011;4-100; 5-101;6-110;7-111. 总权值: W2=3*100=300
4、二叉树的周游(遍历)
二叉树的周游:对于一棵二叉树的每一个结点都访问一次且 仅一次的操作 1)做一条绕行整个二叉树的行走路线(不能穿过树枝) 2)按行走路线经过结点的位臵(左边、下边、右边) 得到周游的方法有三种: 中序遍历(路线经过结点下边时访问结点) 访问的次序:左子树-根-右子树 前序遍历(路线经过结点左边时访问结点) 访问的次序:根-左子树-右子树 后序遍历(路线经过结点右边时访问结点) 访问的次序:左子树-右子树-根
2、根树中顶点的关系
定义:设T为一棵非平凡的根树, v2 ∀vi,vj∈V(T),若vi可达vj,则称vi为 vj的祖先,vj为vi的后代; v4 v5 若vi邻接到vj(即<vi,vj>∈E(T),称 vi为vj的父亲,而vj为vi的儿子 v8 若vj,vk的父亲相同,则称vj与vk是兄 弟
dfs通用步骤-概述说明以及解释

dfs通用步骤-概述说明以及解释1.引言1.1 概述DFS(深度优先搜索)是一种常用的图遍历算法,它通过深度优先的策略来遍历图中的所有节点。
在DFS中,从起始节点开始,一直向下访问直到无法继续为止,然后返回到上一个未完成的节点,继续访问它的下一个未被访问的邻居节点。
这个过程不断重复,直到图中所有的节点都被访问为止。
DFS算法的核心思想是沿着一条路径尽可能深入地搜索,直到无法继续为止。
在搜索过程中,DFS会使用一个栈来保存待访问的节点,以及记录已经访问过的节点。
当访问一个节点时,将其标记为已访问,并将其所有未访问的邻居节点加入到栈中。
然后从栈中取出下一个节点进行访问,重复这个过程直到栈为空。
优点是DFS算法实现起来比较简单,而且在解决一些问题时具有较好的效果。
同时,DFS算法可以用来解决一些经典的问题,比如寻找图中的连通分量、判断图中是否存在环、图的拓扑排序等。
然而,DFS算法也存在一些缺点。
首先,DFS算法不保证找到最优解,有可能陷入局部最优解而无法找到全局最优解。
另外,如果图非常庞大且存在大量的无效节点,DFS可能会陷入无限循环或者无法找到解。
综上所述,DFS是一种常用的图遍历算法,可以用来解决一些问题,但需要注意其局限性和缺点。
在实际应用中,我们需要根据具体问题的特点来选择合适的搜索策略。
在下一部分中,我们将详细介绍DFS算法的通用步骤和要点,以便读者更好地理解和应用该算法。
1.2 文章结构文章结构部分的内容如下所示:文章结构:在本文中,将按照以下顺序介绍DFS(深度优先搜索)通用步骤。
首先,引言部分将概述DFS的基本概念和应用场景。
其次,正文部分将详细解释DFS通用步骤的两个要点。
最后,结论部分将总结本文的主要内容并展望未来DFS的发展趋势。
通过这样的结构安排,读者可以清晰地了解到DFS算法的基本原理和它在实际问题中的应用。
接下来,让我们开始正文的介绍。
1.3 目的目的部分的内容可以包括对DFS(Depth First Search,深度优先搜索)的应用和重要性进行介绍。
离散数学7-树

(b)
(a)
V5
2
1
V7
8
9
V2
V4
2
3
V8
5
V1
V1
V4
V5
1
3
V7
V6
8
V4
2
V8
5
6
V1
1
V5
6
V7
V6
8
3
V8
5
6
V7
9
V3
(e)
V3
(f)
(g)
22
V2
V3
(h)
五.应用举例——求最小生成树
例3 用管梅谷算法求下图的最小生成树。
23
五.应用举例——求最小生成树
例3 用管梅谷算法求下图的最小生成树。
成圈。
首先证明T无简单回路。对n作归纳证明。
(i) n=1时,m=n-1=0,显然无简单回路;
(ii)假设顶点数为n-1时无简单回路,现考察顶点数是n的情况:此时至少有一
个顶点v其次数d(v)=1。因为若n个顶点的次数都大于等于2,则不少于n条边,但这与
m=n-1矛盾。
删去v及其关联边得到新图T’,根据归纳假设T’无简单回路,再加回v及其关联
边又得到图T,则T也无简单回路。
再由图的连通性可知,加入任何一边后就会形成圈,且只有一个圈,否则原图
中会含圈。
9
二. 基本定理——证明
证明(4):(3)(4),即证一个无圈图若加入任一边就形成圈,
则该图连通,且其任何一边都是桥。
若图不连通,则存在两个顶点vi和vj,在vi和vj之间没有路,若
加边(vi,vj)不会产生简单回路,但这与假设矛盾。由于T无简单回
图论中的树与树的性质

图论中的树与树的性质图论是研究图及其性质的数学分支。
在图论中,树是一种特殊的无环连通图,它具有许多重要的性质和应用。
本文将介绍图论中树以及树的性质的相关内容。
一、树的定义与基本性质树是一个连通且无环的无向图。
具体定义如下:1. 一个只有一个顶点的图是一个树。
2. 一个连通的图,如果删除任意一条边,则图不再连通,那么该图就是一个树。
树具有以下基本性质:1. 一棵树有且只有一个连通分量。
2. 在一棵树中,任意两个顶点之间存在唯一路径。
3. 一棵树的边数比顶点数少1。
树的性质使得其在各个领域有着广泛的应用。
下面将介绍树的一些重要性质。
二、树的性质1. 最小生成树最小生成树是指在一个带权图中,找到一个树,使得该树的边的权值之和最小。
常用的最小生成树算法有Prim算法和Kruskal算法。
最小生成树在网络设计、电力传输等领域有着重要的应用。
2. 无向树与有向树的转化无向树可以通过给每条边赋予方向而转化为有向树,同样,有向树也可以通过移除边的方向而转化为无向树。
3. 树的直径树的直径是指树中任意两个顶点之间的最长路径。
求树的直径的算法可以通过两次BFS或DFS来实现。
树的直径问题在网络拓扑、动态规划等领域有重要应用。
4. 中心与半径树的中心定义为树中顶点到其他所有顶点的距离之和最小的顶点。
树的半径定义为树中顶点到离其最远的顶点的距离。
中心和半径是树中的重要概念,它们在设计网络、发现故障等方面有着重要应用。
5. 树的遍历树的遍历是指按照一定规则来访问树的所有顶点。
常用的树的遍历算法有深度优先搜索(DFS)和广度优先搜索(BFS)。
树的遍历在路径搜索、关系分析等方面有广泛应用。
6. 散射树散射树是一种特殊的树结构,它是由无向图中一棵以散射点为根的最小生成树与散射关键路径组成。
散射树在光纤传输等领域有着广泛的应用。
以上是图论中树的一些性质的简要介绍,树作为图论中的重要概念,具有许多重要的性质和应用。
从最小生成树到树的遍历,树的性质在各个领域都有着广泛的应用。
生成树算法的三个步骤

生成树算法的三个步骤生成树是图论中的重要概念,它描述了一个连通图的一个子图,该子图包含了图中的所有顶点,并且是无环的。
生成树算法是用来找到一个连通图的生成树的一种方法。
本文将介绍生成树算法的三个步骤:图的遍历、边的选择和生成树的构建。
一、图的遍历图的遍历是生成树算法的第一步,它的目的是将图中的所有顶点访问一遍。
常用的图的遍历算法有深度优先搜索(DFS)和广度优先搜索(BFS)。
深度优先搜索是通过递归的方式进行遍历,从某个顶点开始,先访问它的一个邻接顶点,然后再递归地访问该邻接顶点的邻接顶点,直到所有顶点都被访问过。
广度优先搜索是通过队列的方式进行遍历,从某个顶点开始,先访问它的所有邻接顶点,然后再依次访问这些邻接顶点的邻接顶点,直到所有顶点都被访问过。
二、边的选择边的选择是生成树算法的第二步,它的目的是选择一些边,使得这些边构成一个连通图的生成树。
常用的边的选择算法有最小生成树算法和最大生成树算法。
最小生成树算法的目标是选择一些边,使得这些边的权值之和最小。
常用的最小生成树算法有普里姆算法和克鲁斯卡尔算法。
普里姆算法是从一个顶点开始,每次选择一条最小权值的边,将该边连接的顶点加入到生成树中,直到所有顶点都被加入到生成树中。
克鲁斯卡尔算法是先将所有边按照权值从小到大排序,然后依次选择权值最小的边,如果这条边连接的两个顶点不在同一个连通分量中,则将这条边加入到生成树中。
最大生成树算法的目标是选择一些边,使得这些边的权值之和最大。
常用的最大生成树算法有逆克鲁斯卡尔算法和逆普里姆算法。
逆克鲁斯卡尔算法和逆普里姆算法的原理与克鲁斯卡尔算法和普里姆算法相反。
三、生成树的构建生成树的构建是生成树算法的第三步,它的目的是根据选择的边构建一个生成树。
生成树可以用邻接矩阵或邻接表来表示。
邻接矩阵是一个二维数组,其中的元素表示两个顶点之间是否有边。
邻接表是一种链表的数据结构,其中的每个节点表示一个顶点,节点的值表示该顶点的邻接顶点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
树与图的简单遍历算法
发表时间:2019-01-14T09:56:22.797Z 来源:《科技新时代》2018年11期作者:闵俊齐
[导读] 树与图是两种重要的数据结构,而树可以说是一种特殊的图,它的两两结点之间存在唯一简单路径。
重庆第二外国语学校重庆 400065
摘要:树与图是两种重要的数据结构,而树可以说是一种特殊的图,它的两两结点之间存在唯一简单路径。
利用其特殊性质,人们创造了许多算法来处理数据结构问题和程序调用问题。
而树与图的遍历算法也是数据结构中重要的算法之一。
本文从树与图的概念出发,简单的介绍了树与图的主要存储方式,并重点对二叉树的简单遍历算法、哈夫曼树的生成和图的深度优先遍历及广度优先遍历做出了介绍。
关键词:数据结构;二叉树;图;遍历算法
1.树与图的概念
树是一种数据结构,是由n(n≥0)个结点构成的具有明显层次关系的有限集合。
一棵树一般由一个根节点和若干个子结点构成。
结点与结点之间具有明显的并列或层次关系,这种层次关系称为父子关系。
在一棵树中,没有父结点的结点被称为根结点。
树有几个重要的概念,以下做出简单的介绍——树的度:某个结点拥有的子树的数量称为这个结点的度,度为零的结点也叫做叶结点,而度不为零的结点叫做分支结点。
树的深度:一棵树的根结点的层次为1,其他结点的层次是其父结点的层次加1。
一棵树里最大的层次的值被称为这棵树的深度。
树有无序树,有序树,二叉树等。
其中二叉树是每个结点最多有两个子结点的树,每个结点的子树通常被称为“左子树”和“右子树”,故二叉树中每个结点的度的最大值为2,而又有左右之分,二叉树中结点的次序不能任意颠倒。
除最后一层的叶结点没有子结点外,其余每一层的每个结点都具有两个子结点的二叉树称为满二叉树。
如果存在一个深度为h的二叉树,它的除h层外其余各层(1~h-1)的结点数都达到了最大值,并且它的第h层的结点全部集中在树的左边,这种二叉树就被称为完全二叉树。
完全二叉树是由满二叉树引申出来的,它是一种效率很高的数据结构。
本文后部分将会介绍二叉树的简单遍历算法。
图由若干个顶点组成的有限非空集合和各个顶点的边构成,通常表示为G(V,E),其中G表示一个图,V是图G中顶点的集合,E是图G中边的集合。
图数据结构主要研究形状和图形数据元素之间的关系。
它必须反映数据所对应的元素之间的几何关系和拓扑关系。
图依照边的方向可分为有向图和无向图。
有向图由顶点和弧构成。
弧有弧尾和弧头,带箭头的一边称为弧头。
图结构与树结构相比较,图中的任意两个元素都有可能相关。
而对某个结点而言,树下层可能有多个元素,上层只有能一个元素,复杂度比树大[1]。
2二叉树与图的储存方式
2.1二叉树的储存方式
二叉树有两种储存方式:顺序存储和链式存储。
顺序储存就是按照完全二叉树的结点层次顺序存储的一种只适用于完全二叉树的储存方式,且在最坏的情况下,k个结点的单支数却只需要长度的 -1的一维数据。
这种储存需要一个完全连续地址,所以会占用许多的储存空间。
在二叉树中,每个结点信息一般都由一下几个部分构成:该结点的数据元素(Data)、指向左子树的指针(L child)和指向右子树的指针(R child)。
利用指针,我们可以很好的存储二叉树。
若使用二叉链表,每个结点的结构如图1(a)所示。
一般可以(L,D,R)来表示。
在三叉链表中,可表示每个结点的父结点,结构如图1(b)所示。
一般可以(L,D,P,R)来表示[5]。
链式储存不需要完全连续地址,节约储存空间[2]。
图2
3.二叉树的遍历算法及哈夫曼树的生成
3.1二叉树的遍历算法
遍历,是指用某种方法沿着某条路对每一个元素做一且仅一次访问,它是二叉树的重要运算之一。
二叉树的主要有三种访问方式:先序遍历、中序遍历、后序遍历。
具体实现过程如下:
先序遍历:先序遍历是按照“根节点→左子树→右子树”的顺序来访问一个二叉树。
以下图为例,先序遍历的结果为“ABDECFG”。
获得该结果的思维过程是:先访问根节点A,A有左右两个子树,根据先左后右的顺序,所以访问B。
因为B中也有左右两个子结点,递归调用,访问结点D。
D没有子结点,所以接下来访问B的右结点E。
此时,左子树以访问完毕,开始访问右子树。
以相同的规则,接下来依次访问
C,F,G。
中序遍历:中序遍历按照“左子树→根节点→右子树”的顺序来访问二叉树。
依然以下图为例,中序遍历的结果是“DBEAFCG”。
获得该结果的思维过程是:从根结点A开始,访问其左子树。
将根结点A的左子树单独拿出来看,B作为根结点也具有左右子树,而其左子树只具有一个结点C,所以先访问C,再访问B,接着访问E。
此时,A的左子树已全部访问,故接下来访问A和它的右子树。
根据相同的规则,后面的访问顺序为F,C,G。
后序遍历:后序遍历按照“后序左子树→后序右子树→根节点”的顺序来访问二叉树。
还是以下图为例,后序遍历的结果是“DEBFGCA”。
获得该结果的思维过程是:从左到右,从叶结点到父结点,依次访问树中的结点,顺序为D,E,B,F,G,C。
最后访问根结点A。
三种遍历方法的遍历过程中查找的节点及路线是一样的,只是访问的顺序不同[3]。
3.2哈夫曼树的生成
哈夫曼树又称最优二叉树。
给定n个权值{W1,W2,……Wn}作为n个子结点来构建一棵二叉树,如果这棵二叉树的带权路径达到最小,就称这样的具有最小带权路径的二叉树为最优二叉树。
哈夫曼树的实现过程如下简述:
(1)根据给定的n个权值{W1,W2,……Wn}来构造出由n棵二叉树组成的集合N={C1,C2,……Cn},在二叉树集合N中的每棵二叉树Ci中只有一个权值为Wi的根结点,它的左右子树皆为空。
(2)在集合N中选取两棵权值最小的二叉树,将这两棵二叉树分别作为左子树和右子树来重新构建一棵新的二叉树,这棵新的二叉树的权值为其左右子树的根结点的权值之和。
(3)于集合N中删除在步骤(2)中使用的两个二叉树,并将步骤(2)中新创建的一个二叉树加入集合N。
(4)重复步骤(2)和(3),直到集合N中只剩下一棵二叉树,这棵二叉树便是所求的最优二叉树[4]。
如图1所示。
我们给定一组权值{9,5,3,7},以其来构造一棵最优二叉树。
根据以上提到的步骤沿(a)、(b)、(c)、(d)便可构造出一棵最优二叉树。
建立最优二叉树后便使用哈夫曼编码进行储存。
这样可以节约内存,提高效率。
在最优二叉树建立后从根结点到所以叶结点的每个左分支为0,右分支为1,让后从上到下写出每个结点的哈夫曼编码。
图1中每个结点的哈夫曼编码为:A-0 B-110 C-111 D-10。
值得注意的是,由于二叉树的左右子树交换对其父结点的权值大小没有影响,所以给定一组权值所创造的最优二叉树并不是唯一的。
最优二叉树的主要表现具有直观性,对其编码进行通讯可以极大的提高信息通道的利用率,降低信息传递时间,降低信息传递成本[2]。
4.图的遍历
图的遍历算法主要有深度优先遍历和广度优先遍历。
深度优先搜索是树的先根遍历的推广,从图中任意一点V开始,访问V,再依次从V的未被访问的邻接点出发深度优先遍历图,直到图中所以和V路径相通的点都被访问到,若还有顶点未被访问,则从另一未访问的点出发进行深度优先遍历。
如在图二中,先从顶点1开始访问,与顶点1相邻的顶点为顶点2和顶点4,我们选取顶点2作为下一个访问点,这之后访问顶点5,最后访问顶点3。
此时,本侧的访问结束,但顶点1还有与之相邻的未访问的顶点,于是接下来访问顶点4,到此为止,改图的所有结点都完成了访问,于是该图的遍历就结束了。
该图深度优先遍历顺序总结为:1→2→5→3、4。
广度优先搜索是树的按层遍历的类似。
从图中任意一点V开始,访问V,再依次从V的未被访问的邻接点出发依次访问它们的邻接点,并使先被访问到的邻接点先于后被访问顶点的邻接点被访问,直到图中所以的顶点被访问。
如图2中广度优先遍历的顺序为:14253。
参考文献
[1] 寇斌. 图在计算机中的存储结构[J]. 信阳农林学院学报, 2002, 12(1):91-92.
[2] 陈桂英,王亚鹏. 哈夫曼树及其应用[J]. 河南科技,2014(24):256-257.
[3] 刘洋. 一种统一的二叉树结构遍历算法及其实现[J]. 赣南师范大学学报, 2004, 25(3):10-13.
[4] 韩相军,郭春英. 浅谈哈夫曼树及其应用[J]. 濮阳教育学院学报,2001(03):45-49.
[5] 张静,邬恩杰. 二叉树的二叉链表存储结构的构造算法[J]. 电脑编程技巧与维护,2018(05):59-60+63.。