计算机应用基础课程第14讲数据结构基础_1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

二叉树的前序序列为
ABDEFCHGI
中序序列为
DBFEACGHI
2019/11/16
计算机应用基础 刘谦
24
9.2.4 二叉树
2)中序遍历
所谓中序遍历是指在访问根结点、遍历左子树、
遍历右子树这三者中,首先遍历左子树,然后访问
根结点,最后遍历右子树;并且,在遍历左、右子
树时,仍然先遍历左子树,然后访问根结点,最后
⑹在一棵二叉树中,如果所有分支结点都存在左子
树和右子树,并且所有叶子结点都在同一层上,
这样的一棵二叉树称作满二叉树。
2019/11/16
计算机应用基础 刘谦
11
9.2.4 二叉树
满二叉树结点总和为:
2019/11/16
计算机应用基础 刘谦
12
9.2.4 二叉树
⑺一棵深度为k的有n个结点的二叉树,对树中的
码是指数据元素(记录)中某个项或组合项的值,用
它可以标识一个数据元素(记录)。能唯一确定一个
数据元素(记录)的关键码,称为主关键码;而不能
唯一确定一个数据元素(记录)的关键码,称为次关
键码。如学生情况表中“学号”即可看成主关键码,
“姓名”则作为次关键码,因可能有同名同姓的学生
;查找表是指由具有同一类型(属性)的数据元素(
具有层次关系的数据都可以用树这种结构来描述 。在所有的层次关系中人们最熟悉的是血缘关系, 按血缘关系可以很直观地理解树结构中各数据元素 结点之间的关系。
行政各机构也是一个典型的层次关系。
2019/11/16
计算机应用基础 刘谦
4
9.2.4 二叉树
树形结构 (除了一个称为根的结点外)每个元素 都有且仅有一个直接前趋,有零个或多个直接后继。
子树,也要区分它是左子树还是右子树。因此二叉
树具有五种基本形态,如图所示。
2019/11/16
计算机应用基础 刘谦
7
9.2.4 二叉树
二叉树具有五种基本形态
Ф
(a) (b)
左子树
(c)
右子树
(d)
左子树
(e)
右子树
2019/11/16
二叉树2个重要的特点:
①非空二叉树只有一个根结点; ②每一个结点最多有两棵子树,
1. 二叉树(Binary Tree)
二叉树是个有限元素的集合,该集合或者为空、
或者由一个称为根(root)的元素及两个不相交的、
被分别称为左子树和右子树的二叉树组成。当集合
为空时,称该二叉树为空二叉树。在二叉树中,一
个元素也称作一个结点。
二叉树是有序的,即若将其左、右子树颠倒,就
成为另一棵不同的二叉树。即使某个结点只有一棵
《计算机应用基础》第9讲 9.2 数据结构
9.2.4 二叉树
9.3 常用查找与排序方法
9.3.1 查找
9.3.2 排序
2019/11/16
计算机应用基础 刘谦
1
9.2.4 二叉树
根据数据结构中各数据元素之间的前驱与后继关 系的复杂程度,逻辑上可以把数据结构分为线性结 构和非线性结构两大类。
上一讲重点介绍的是数据结构中的线性结构:
构中至少存在一个数据元素,有两个或1 两个以上的
直接前驱(或直接后继)元素。2
C
F
G
2019/11/16
计算机应用基形结构就是一种十分重要的非线性结构,可以 用来描述客观世界中广泛存在的层次结构关系,这 种结构的特点是:有一个特定的结点称为根结点, 它没有前趋,其它结点可以有多个后继,但只有唯 一的前驱结点。
右子树,最后访问根结点;并且,在遍历左、右子 树时,仍然先遍历左子树,然后遍历右子树,最后
访问根结点。 后序遍历二叉树的过程是一个递归的过程。
若二叉树为空,则结束,返回。否则: (1)后序遍历左子树; (2)后序遍历右子树;
(3)访问根结点。 前例: 后序序列为
D F E B G I H C A 2019/11/16
2019/11/16
计算机应用基础 刘谦
13
9.2.4 二叉树
完全二叉树
2019/11/16
完全二叉树
计算机应用基础 刘谦
14
9.2.4 二叉树
3.二叉树的主要性质
① 性质1 一棵非空二叉树的第i层上最多有2i-1 个结点(i≥1)参见满二叉树
② 性质2 一棵深度为k的二叉树中,最多具有2k -1个结点。参见满二叉树
lchild data rchild
2019/11/16
计算机应用基础 刘谦
18
9.2.4 二叉树
4. 二叉树的存储结构
2019/11/16
存放了地址个数? 空指针个数?
计算机应用基础 刘谦
19
9.2.4 二叉树
4. 二叉树的存储结构
在计算机中,二叉树通常采用链式存储结构。
【问题】若用链表存储一棵二叉树时,每个结点 除数据域外,还有指向左孩子和右孩子的两个指针 。在这种存储结构中,N个结点的二叉树共有 ________个指针域,其中有________个指针域是存 放了地址,有________________个指针是空指针。
2019/11/16
计算机应用基础 刘谦
22
9.2.4 二叉树
前序遍历二叉树的过程是一个递归的过程。简述 如下:
若二叉树为空,则结束,返回。否则: (1)访问根结点; (2)前序遍历左子树; (3)前序遍历右子树。
2019/11/16
计算机应用基础 刘谦
23
9.2.4 二叉树
特别注意:在遍历左右 子树时仍然采用前序遍历 方法。参见右例的访问序 列
计算机应用基础 刘谦
26
9.2.4 二叉树
例:右图 前序序列 中序序列 后序序列
ABDHECFG HDBEAFCG HDEBFGCA
2019/11/16
例:左图
前序序列 JGDEABHFC
中序序列 DGAEBJHFC
后序序列 DABEGCFHJ
计算机应用基础 刘谦
27
9.2.4 二叉树
已知中序和后序遍历(或中序和前序遍历),是 否能够求解前序(后序)遍历结果?
9
9.2.4 二叉树
2. 二叉树中相关名词术语
⑴ 结点所拥有的子树的个数称为该结点的度。
⑵ 度为0的结点称为叶结点,度不为0的结点称为分 支结点
⑶ 树中一个结点的子树的根结点称为这个结点的孩 子,这个结点称为它孩子结点的双亲,具有同一 个双亲的孩子结点互称为兄弟。
⑷ 如果一棵树的一串结点n1, n2, …, nk有如下关
图中的结点 可表示为血缘 关系,也可代 表多层行政机 构名
在树的图形表示中,总是认为在用直线连接起来的
两端结点中,上端结点是前趋,下端结点是后继。
2019/11/16
计算机应用基础 刘谦
5
9.2.4 二叉树
在树的结构中,每一个结点只有一个前趋,前趋
结点称为父结点;没有前趋的结点只有一个,直称
为树的根结点,简称为树的根。
2) 折半查找 也称二分查找,它是一种效率较高的查找方法,它 要求查找表必须是顺序结构存储且表中数据元素按关 键码有序排列。
2019/11/16
2n n-1 n+1
2019/11/16
计算机应用基础 刘谦
20
9.2.4 二叉树
5. 二叉树的遍历
二叉树中的遍历指的是顺着某一条搜索路径巡访二 叉树中的结点,使得每个结点均被访问一次,而且仅 被访问一次,这里可以将“访问”的含义理解为输出 结点的信息。
二叉树的遍历是指不重复地访问二叉树的所有结点。 遍历二叉树的方法实际是要确定访问各结点的顺序, 以便不重不漏地访问到二叉树的所有结点。在遍历二 叉树的过程中,一般先遍历左子树,然后再遍历右树。
③ 性质3 对于一棵非空的二叉树,如果叶子结点数为n0, 度数为2的结点数为n2,则有n0=n2+1。
2019/11/16
计算机应用基础 刘谦
15
9.2.4 二叉树
4. 二叉树的存储结构 (附顺序存储结构)
在计算机中,二叉树通常采用链式存储结构。 二叉树的顺序存储结构 此结构是将二叉树的所有结点,按照一定的次序 ,存储到一片连续的存储单元中。因此,必须将结 点排成一个适当的线性序列,使得结点在这个序列 中的相应位置能反映出结点之间的逻辑关系。这种 结构特别适用于完全二叉树。
遍历右子树。
中序遍历二叉树的过程是一个递归的过程:
若二叉树为空,则结束,返回。否则:
(1)中序遍历左子树; (2)访问根结点;
(3)中序遍历右子树。
2019/11/16
计算机应用基础 刘谦
25
9.2.4 二叉树
3)后序遍历 所谓后序遍历是指在访问根结点、遍历左子树、
遍历右子树这三者中,首先遍历左子树,然后遍历
ABCDEFGHIJKLMNOPQ
2019/11/16
计算机应用基础 刘谦
17
9.2.4 二叉树
4. 二叉树的存储结构
在计算机中,二叉树通常采用链式存储结构。 与线性表类似,用于存储二叉树中各元素的存储 结点也由两部分组成:数据域与指针域。但在二叉 树中,由于每一个元素可以有两个后件(即两个子 结点),因此,用于存储二叉树的存储结点的指针 域有两个:一个用于指向该结点的左子结点的存储 地址,称为左指针域;另一个用于指向该结点的右 子结点的存储地址,称为右指针域。
在树的结构中,每一个结点可以有多个后继,它
们都称为该结点的子结点。没有后继的结点称为叶
子结点。
二叉树是应用最广泛、最有代表性的树型结构。
专业上,因为一般的树结构可以转化成二叉树,
教材上没有涉及一般的树结构,只介绍二叉树。但
严格说来,二叉树不是树!
2019/11/16
计算机应用基础 刘谦
6
9.2.4 二叉树
逻辑结构 线性结构

非线性结构

结 构
存储结构
顺序存储
链接存储
运算 插入 删除 查找 排序 遍历
2019/11/16
计算机应用基础 刘谦
2
9.2.4 二叉树
但现实中的许多事物的关系并非这样简单,如人
类社会的族谱、各种社会组织机构以及城市交通、
通讯等,这些事物之间的联系都是非线性的,要用
到树形(或图形)这种非线性数据结构。在这类结
结点按从上至下、从左到右的顺序进行编号,如编
号为i(1≤i≤n)的结点与满二叉树中编号为i的
结点在二叉树中的位置相同,则这棵二叉树称为完 全二叉树。
完全二叉树的特点是:叶子结点只能出现在最下 层和次下层,且最下层的叶子结点集中在树的左部 。显然,一棵满二叉树必定是一棵完全二叉树,而 完全二叉树未必是满二叉树。
记录)组成的集合。
2019/11/16
计算机应用基础 刘谦
29
9.3 常用查找与排序方法
1) 顺序查找 顺序查找又称线性查找,是最基本的查找方法之一 其查找方法为:从表的一端开始,向另一端逐个将 给定值x与关键码进行比较,若找到,查找成功,并 给出数据元素在表中的位置;若整个表检测完,仍未 找到与x相同的关键码,则查找失败,给出失败信息
2019/11/16
计算机应用基础 刘谦
16
9.2.4 二叉树
4. 二叉树的存储结构 (附顺序存储结构)
在一棵具有n个结点的完全二叉树中,我们从树 根起,自上层到下层,逐层从左到右给所有结点编 号,就能得到一个足以反映整个二叉树结构的线性 序列,如图所示。其中每个结点的编号就作为结点 的名称。
顺序存储序列为:
2019/11/16
计算机应用基础 刘谦
21
9.2.4 二叉树
在先左后右的原则下,根据访问根结点的顺序, 二叉树的遍历可以分为三种:前序遍历、中序遍历、 后序遍历。
1) 前序遍历
所谓前序遍历是指在访问根结点、遍历左子树、 遍历右子树这三者中,首先访问根结点,然后遍历 左子树,最后遍历右子树;并且,在遍历左、右子 树时,仍然先访问根结点,然后遍历左子树,最后 遍历右子树。
系:结点ni是ni+1的父结点(1≤i<k),就把n1,
n2, …, nk称为一条由n1至nk的路径,这条路径的
长度是k-1。
2019/11/16
计算机应用基础 刘谦
10
9.2.4 二叉树
如果有一条路径从结点M到结点N,那么M就称为N 的祖先,而N称为M的子孙。
⑸规定树的根结点的层数为1,其余结点的层数等于 它的双亲结点的层数加1,树中所有结点的最大层 数称为树的深度,树中各结点度的最大值称为该 树的度。
【问题】某二叉树中序序列为ABCDEFG,后序序列 为BDCAFGE 则前序序列是? EACBDGF
由后序知:E是根结点; 其次需要分析那些结点 在左子树,那些在右子 树中?根据中序可知FG 是在右子树中!
2019/11/16
计算机应用基础 刘谦
28
9.3 常用查找与排序方法
1. 查找 查找中涉及到的两个名词是关键码和查找表,关键
且分别称为结点的左子树与 右子树。
计算机应用基础 刘谦
8
9.2.4 二叉树
特别注意:二叉树 中的每个结点的子树 被明显地分为左子树 与右子树。在二叉树 中可以只有左子树而 没有右子树,也可以 只有右子树而没有左 子树。
1
A
2
B
4
D
5
E
C
6
F
7
G
H
I
J
8
9
10
2019/11/16
计算机应用基础 刘谦
相关文档
最新文档