树在数据结构中的简单应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目:树在数据结构中的简单应用
树在数据结构中的简单应用
Simple Application of Tree In Data-structure
摘要
树形结构是一类重要的非线性结构.本文研究了树形数据结构的基础知识,包括相关定义、操作以及树在数据结构中的简单应用问题.主要运用图示以及相关的算法来研究树以及树在数据结构中的若干应用问题,如在编码问题中的应用、在查找算法中的应用等.
关键词:树;二叉树;数据结构;树的应用
ABSTRACT
The construction of tree form is an important construction of not line. In this paper, we research the base knowledge of tree including some correlation definition, operation and the simple application of tree in data structure. We research tree and some application of tree in data structure by diagram and some correlative arithmetic, for example, in coding, in arithmetic and so on.
Key words : Tree, Tree of two fork; Data construction; The tree's application
目录
摘要 (Ⅰ)
A B S T R A C T (Ⅱ)
0引言 (1)
1树的概述 (1)
1.1树的定义及相关术语 (1)
1.2二叉树的定义及数学性质 (4)
1.3二叉树的表示 (6)
1.4树的操作 (9)
2树在最短路径问题中的应用 (11)
2.1生成树和最小(代价)生成树 (11)
3树在编码中的应用 (14)
3.1哈夫曼编码问题 (14)
3.2哈夫曼树的定义 (14)
3.3哈夫曼树的构造 (15)
3.4哈夫曼树的应用 (16)
4树在查找算法中的应用 (17)
4.1二叉排序树的概述 (17)
4.2二叉排序树的查找 (18)
结束语 (21)
参考文献 (22)
0引言
在计算机应用的各个领域中都会遇到各种各样的数据结构,而树在数据结构中又是一个相当重要的非线性结构,广泛应用于计算机领域中.在现实生活中存在很多可以用树形结构描述的实际问题,比如家谱等.下面先给出关于树的一些基本知识.
1树的概述
树是一类重要的非线性结构,非常类似与自然界中的树.在计算机领域有广泛的应用.本章重点研究树的相关基础知识.
1.1树的定义及树的相关术语
在本节中我们首先定义树以及树的一些相关术语.
1.1.1树的定义
树是由一个集合以及在该集合上定义的一种关系构成的.集合中的元素称为树的结点,所定义的关系称为父子关系.父子关系在树的结点之间建立了一个层次结构.在这种层次结构中有一个结点具有特殊的地位,这个结点称为该树的根结点,或简称为树根.我们可以形式地给出树的递归定义如下:
ⅰ)单个结点是一棵树,树根就是该结点本身.
ⅱ) 设12,,,k T T T 是树,它们的根结点分别为12,,,k n n n ,用一个新结点n 作为12,,,k n n n 的父亲,则得到一棵新树,结点n 就是新树的根.我们称12,,,k n n n 为一组兄弟结点,它们都是结点n 的儿子结点.我们还称12,,,k n n n 为结点n 的子树.
空集合也是树,称为空树.空树中没有结点.
一棵典型的树如图1-1所示
图1-1 树的层次结构
由图1-1可以看出树的形状就像一棵现实中的树,只不过是倒过来的.
1.1.2 树的相关术语
结点的度[1]:一个结点的儿子结点的个数称为该结点的度.一棵树的度是指该树中结 点的最大度数.
叶结点:树中度为零的结点称为叶结点或终端结点.
分枝结点:树中度不为零的结点称为分枝结点或非终端结点.
内部结点[1]:除根结点外的分枝结点统称为内部结点.例如在图1-1中,结点,,A B 和E 的度分别为3,2,0.其中A 为根结点,B 为内部结点,E 为叶结点,树的度为3.
路径:如果存在树中的一个结点序列12,,,j K K K ,使得结点i K 是结点1i K +的父结点 ()1i j ≤≤,则称该结点序列是树中从结点i K 到结点j K 的一条路径或道路.我们称这条
路径的长度为1j -,它是该路径所经过的边(即连接两个结点的线段)的数目.树中任一结点有一条到其自身的长度为零的路径.例如,在图1-1中,结点A 到结点I 有一条路径ABFI ,它的长度为3.
祖先:如果在树中存在一条从结点K 到结点M 的路径,则称结点K 是结点M 的先, 也称结点M 是结点K 的子孙或后裔.例如在图1-1中,结点F 的祖先有,A B 和F 自己,而它的子孙包括它自己和,I J .注意,任一结点既是它自己的祖先也是它自己的子孙.
真祖先、真子孙:我们将树中一个结点的非自身祖先和子孙分别称为该结点的真祖 先和真子孙.在一棵树中,树根是唯一没有真祖先的结点.叶结点是那些没有真子孙的结点.子树是树中某一结点及其所有真子孙组成的一棵树.
结点高度[1]:树中一个结点的高度是指从该结点到作为它的子孙的各叶结点的最长 路径的长度.树的高度是指根结点的高度.例如图1-1中的结点B ,C 和D 的高度分别2,0和1,而树的高度与结点A 的高度相同为3.
结点的深度或层数:从树根到任一结点n 有唯一的一条路径,我们称这条路径的长 度为结点n 的深度或层数.根结点的深度为0,其余结点的深度为其父结点的深度加1.深度相同的结点属于同一层.例如,在图1-1中,结点A 的深度为0;结点,B C 和D 的深度为1;结点,,,E F G H 的深度为2;结点I 和J 的深度为3.在树的第二层的结点有,,E F G 和H ,树的第0层只有一个根结点A .
有序树、左儿子、右兄弟:树的定义在某些结点之间确定了父子关系,我们又将这 种关系延拓为祖先子孙关系.但是树中的许多结点之间仍然没有这种关系.例如兄弟结点之间就没有祖先子孙关系.如果我们在树的每一组兄弟结点之间定义一个从左到右的次序,则得到一棵有序树;否则称为无序树.设结点n 的所有儿子按其从左到右的次序排列为12,,,k n n n ,则我们称1n 是n 的最左儿子,或简称左儿子,并称i n 是1i n -的右邻兄弟,或简称右兄弟()2,3,,i k = .
图1-2中的两棵树作为无序树是相同的,但作为有序树是不同的,因为结点a 的两个儿子在两棵树中的左右次序是不同的.后面,我们只关心有序树,因为无序树总可能转化为有序树加以研究.