二级公共基础知识数据结构与算法演示文稿_第1页
二级公共基础知识数据结构与算法演示文稿_第2页
二级公共基础知识数据结构与算法演示文稿_第3页
二级公共基础知识数据结构与算法演示文稿_第4页
二级公共基础知识数据结构与算法演示文稿_第5页
已阅读5页,还剩103页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

二级公共基础知识数据结构与算法演示文稿当前第1页\共有108页\编于星期五\22点二级公共基础知识数据结构与算法当前第2页\共有108页\编于星期五\22点考试形式1、公共基本知识部份只考选择题,没有操作题。2、公共基本知识占10分,共10道题,每题1分。当前第3页\共有108页\编于星期五\22点注意事项公共基础知识部份的内容是属于计算机专业本科生的专业课,知识点特别散,而且有一定的难度。所以考生在学习的过程中,一定要克服畏难情绪,跟上老师的节奏。老师让记的,要记住。没做要求的,要学会放弃。放弃该放弃的,选择轻装上阵当前第4页\共有108页\编于星期五\22点一、数据结构与算法

1.算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)。2.数据结构的定义;数据的逻辑结构与存储结构;数据结构的图形表示;线性结构与非线性结构的概念。3.线性表的定义;线性表的顺序存储结构及其插入与删除运算。4.栈和队列的定义;栈和队列的顺序存储结构及其基本运算。5.线性单链表、双向链表与循环链表的结构及其基本运算。6.树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历。7.顺序查找与二分法查找算法;基本排序算法(交换类排序,插入类排序,选择类排序)。

当前第5页\共有108页\编于星期五\22点1.1算法1.1.1算法(algorithm)基本概念

它是指令的有限序列,其中每一条指令表示一个或多个操作。对解题方案准确而完整的描述称为算法。算法计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法。当前第6页\共有108页\编于星期五\22点算法的基本特征:(1)有穷性(2)确定性(3)可行性(4)拥有足够的情报(有零个或多个输入,有一个或多个输出)一个算法有零个或多个输入,以刻画运算对象的初始情况,所谓零个输入是指算法本身定出了初始条件;一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;当前第7页\共有108页\编于星期五\22点伪代码:S1:输入圆的半径R;S2:求面积∏R2;S3:输出面积;例1:已知圆的半径,求圆的面积.描述算法的工具通常有传统流程图、N-S结构化流程图、伪代码等。开始输入RS=3.14*

R*R输出S结束传统流程图当前第8页\共有108页\编于星期五\22点第9页算法与计算机程序算法——是一组逻辑步骤程序——用计算机语言描述的算法算法不等于程序,也不等于计算方法,程序的编制不可能优于算法的设计。算法是程序设计的核心当前第9页\共有108页\编于星期五\22点算法:S1:输入圆的半径R;S2:求面积∏R2;S3:输出面积;例题:已知圆的半径,求圆的面积.程序#include<stdio.h>#definePI3.14159intmain(){floatr,s;do{printf("Pleaseinputr:");scanf("%f",&r);if(r<0)printf("Error!\n");}while(r<=0);s=PI*r*r;printf("Area=%f\n",s);return0;}当前第10页\共有108页\编于星期五\22点1.1.2算法的基本要素

1、对数据对象的运算和操作算术运算逻辑运算关系运算数据传输2、算法的控制结构算法中各操作之间的执行顺序一个算法一般可以用顺序、选择、循环3种基本结构组合而成。当前第11页\共有108页\编于星期五\22点算术运算逻辑运算关系运算数据传输顺序、选择、循环3种基本结构#include<stdio.h>#definePI3.14159intmain(){floatR,S;do{printf("PleaseinputR:");scanf("%f",&R);if(R<0)printf("Error!\n");}while(R<=0);s=PI*R*R;printf("Area=%f\n",S);return0;}当前第12页\共有108页\编于星期五\22点1.1.3算法设计基本方法列举法归纳法递推递归(以简洁的形式设计和描述算法)减半递推技术回溯法当前第13页\共有108页\编于星期五\22点1.2算法复杂度1.2.1时间复杂度是指执行算法所需要的计算工作量。通常有事后统计法和事前分析估算法。★算法的工作量用算法所执行的基本运算次数来度量.★算法所执行的基本运算次数与问题的规模n有关(即算法所执行的基本次数是问题规模的函数).执行算法所需要的计算工作量和f(n)同步增长,记为:算法的工作量=f(n)时间复杂度=O(f(n))而对于一个固定的规模,算法所执行的基本次数还与特定的输入有关。当前第14页\共有108页\编于星期五\22点例子4:for(i=2;i<=n;++i)for(j=2;j<=i-1;++j)++x;基本运算:基本运算的执行次数:X增1i=20i=31i=42…i=nn-21+2+3+…+(n-2)=(n-1)(n-2)/2O()例子2:++x;O(1)例子3:for(i=1;i<=n;++i)++x;O(n)时间复杂度:O((n*n-3n+2)/2)基本运算:基本运算的执行次数:时间复杂度:1X增1基本运算:基本运算的执行次数:时间复杂度:X增1n当前第15页\共有108页\编于星期五\22点1.2.2算法的空间复杂度一般是指执行这个算法所需要的内存空间一个算法所占用的内存空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法在执行过程中所需要的额外空间这3部分。当前第16页\共有108页\编于星期五\22点

算法的时间复杂度是指A)执行算法程序所需要的时间B)算法程序的长度C)算法执行过程中所需要的基本运算次数D)算法程序中的指令条数算法的基本特征是可行性、确定性、

【1】和拥有足够的情报。算法的空间复杂度是指

A)算法程序的长度 B)算法程序中的指令条数

C)算法程序所占的存储空间D)执行过程中所需要的存储空间在计算机中,算法是指

A)加工方法 B)解题方案的准确而完整的描述

C)排序方法 D)查询方法例题讲解有穷性当前第17页\共有108页\编于星期五\22点算法分析的目的是

A)找出数据结构的合理性B)找出算法中输入和输出之间的关系

C)分析算法的易懂性和可靠性 D)分析算法的效率以求改进算法的工作量大小和实现算法所需的存储单元多少分别称为算法的【1】。时间复杂度和空间复杂度当前第18页\共有108页\编于星期五\22点1.2数据结构数据结构的定义数据的逻辑结构和存储结构数据结构的图形表示线性结构与非线性结构当前第19页\共有108页\编于星期五\22点能输入到计算机中并能被计算机程序处理的符号的集合。整数(1,2)、实数(1.1,1.2)字符串(Beijing)、图形、声音。1.2.2基本概念和术语

数据结构是一门研究数据组织、存储和运算的一般方法的学科。当前第20页\共有108页\编于星期五\22点计算机管理图书问题

在图书馆里有各种卡片:有按书名编排的、有按作者编排的、有按分类编排如何将查询图书的这些信息存入计算机中既要考虑查询时间短,又要考虑节省空间

数据结构是一门研究数据组织、存储和运算的一般方法的学科。最简单的办法之一是建立一张表,每一本书的信息在表中占一行,如当前第21页\共有108页\编于星期五\22点如何将0,1,2,3,4,5,6,7,8,9这10个数存放在计算机中能最快地达到你所需要的目的?目的不同,最佳的存储方方法就不同。从大到小排列:9,8,7,6,5,4,3,2,1,0输出偶数:0,2,4,6,8,1,3,5,7,9数据元素在计算机中的表示

数据结构是一门研究数据组织、存储和运算的一般方法的学科。对数据结构中的节点进行操作处理(插入、删除、修改、查找、排序)当前第22页\共有108页\编于星期五\22点1.数据的逻辑结构2、数据的存储结构3、数据的运算:检索、排序、插入、删除、修改等。A.线性结构B.非线性结构A顺序存储B链式存储线性表栈队树形结构图形结构数据结构的三个方面当前第23页\共有108页\编于星期五\22点数据结构可描述为Group=(D,R)1.数据的逻辑结构:是指反映数据元素之间逻辑关系的数据结构。它包括数据元素的集合和数据元素之间的前后关系两个因素。有限个数据元素的集合有限个数据元素间关系的集合数据的逻辑结构简称数据结构。当前第24页\共有108页\编于星期五\22点数据元素(DataElement)

数据元素是数据的基本单位,即数据集合中的个体。有时一个数据元素可由若干数据项(DataItem)组成。数据项是数据的最小单位。数据元素亦称结点或记录。当前第25页\共有108页\编于星期五\22点线性树图常用数据结构:当前第26页\共有108页\编于星期五\22点A.线性结构(A,B,C,·······,X,Y,Z)例:学生成绩表86胡孝臣986110395刘忠赏9861107100张卓9861109成绩姓名学号①线性表②栈——后进先出③队列——先进先出例:英文字母表当前第27页\共有108页\编于星期五\22点数据结构S=(D,R)D={春,夏,秋,冬}R={<春,夏>,<夏,秋>,<秋,冬>}什么型的数据结构?用图形工具线性结构数据元素:用中间标有元素值的方框表示,称为结点逻辑关系:用有向线段从前件指向后件(不引起误会情况下,箭头可以省去)冬春夏秋当前第28页\共有108页\编于星期五\22点①树形结构例:家庭成员数据结构可表示成例:计算机文件管理系统也是典型的树形结构B.非线性结构父亲儿子女儿没有前件的结点称为根结点;没有后件的结点称为终端结点(叶子结点)当前第29页\共有108页\编于星期五\22点1423

例:数据结构B(D,R)D={1,2,3,4}R={(1,2),(1,3),(1,4),(2,3),(3,4),(2,4)}213例:数据结构C(D,R)D={1,2,3}R={<1,2>,<2,3>,<3,2>,<1,3>}

②图形结构当前第30页\共有108页\编于星期五\22点元素n……..元素i……..元素2元素1LoLo+mLo+(i-1)*mLo+(n-1)*m存储地址存储内容Loc(ai)=Lo+(i-1)*m1、顺序存储每个元素所占用的存储单元个数(3)存储结构当前第31页\共有108页\编于星期五\22点例:线性表(zhao,qian,sun,li,zhou,wu,zheng,wang)

顺序存储结构:存储地址数据7891011121314zhaoqiansunlizhouwuzhengwang7基地址顺序存储结构,将逻辑上相邻的数据元素存储在物理上相邻的存储单元里,具有以下特点:1.随机存取。2.作插入或删除操作时,需移动大量元数。3.长度变化较大时,需按最大空间分配。4.表的容量难以扩充。当前第32页\共有108页\编于星期五\22点2、链式存储每个节点都由两部分组成:

数据域和指针域。数据域存放元素本身的数据,指针域存放指针。数据元素之间逻辑上的联系由指针来体现。例:线性表(zhao,qian,sun,li,zhou,wu,zheng,wang)链式存储结构:存储地址数据17131925313743liqiansunwangwuzhaozhengzhou指针43131null377192531头指针当前第33页\共有108页\编于星期五\22点通常我们把链表画成用箭头相链接的结点的序列,结点之间的箭头表示链域中的指针。zhaoqiansunlizhouwuzhengwang/H存储地址数据17131925313743liqiansunwangwuzhaozhengzhou指针43131null377192531头指针当前第34页\共有108页\编于星期五\22点1.比顺序存储结构多用空间(存储密度小)(每个节点都由数据域和指针域组成)。2.逻辑上相邻的节点物理上不必相邻。3.插入、删除灵活

(不必移动节点,只要改变节点中的指针)。4.非随机存取。链接存储结构特点:当前第35页\共有108页\编于星期五\22点1.数据的逻辑结构2、数据的存储结构3、数据的运算:检索、排序、插入、删除、修改等。A.线性结构B.非线性结构A顺序存储B链式存储线性表栈队树形结构图形结构数据结构的三个方面(亦称物理结构)……当前第36页\共有108页\编于星期五\22点链表不具有的特点是A)不必事先估计存储空间B)可随机访问任一元素C)插入删除不需要移动元素 D)所需空间与线性表长度成正比数据结构分为逻辑结构与存储结构,线性链表属于【1】

。数据结构中,与所使用的计算机无关的是数据的

A)存储结构 B)物理结构

C)逻辑结构 D)物理和存储结构数据的逻辑结构有线性结构和【1】

两大类。数据的存储结构是指A)数据所占的存储空间B)数据的逻辑结构在计算机中的表示C)数据在计算机中的顺序存储方式D)存储在外存中的数据例题讲解存储结构非线性结构当前第37页\共有108页\编于星期五\22点顺序存储方法是把逻辑上相邻的结点存储在物理位置

【2】的存储单元中。

数据处理的最小单位是

A)数据 B)数据元素C)数据项 D)数据结构数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及

A)数据的存储结构 B)计算方法C)数据映象D)逻辑存储线性表的顺序存储结构和线性表的链式存储结构分别是

A)顺序存取的存储结构、顺序存取的存储结构

B)随机存取的存储结构、顺序存取的存储结构

C)随机存取的存储结构、随机存取的存储结构

D)任意存取的存储结构、任意存取的存储结构

相邻当前第38页\共有108页\编于星期五\22点根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分成

A)动态结构和静态结构 B)紧凑结构和非紧凑结构

C)线性结构和非线性结构D)内部结构和外部结构数据结构包括数据的逻辑结构、数据的

【2】以及对数据的操作运算。数据的基本单位是

【5】。下列叙述中,错误的是

A)数据的存储结构与数据处理的效率密切相关

B)数据的存储结构与数据处理的效率无关

C)数据的存储结构在计算机中所占的空间不一定是连续的

D)一种数据的逻辑结构可以有多种存储结构存储结构数据元素当前第39页\共有108页\编于星期五\22点1.3线性表1.3.1线性表的概念线性表的定义:

线性表是n个元素的有限序列,它们之间的关系可以排成一个线性序列:

(a1,a2,……

,ai,……

,an)

其中n称作表的长度,当n=0时,称作空表。线性表的特点:1.线性表中所有元素的性质相同。2.除第一个和最后一个数据元素之外,其它数据元素有且仅有一个前驱和一个后继.第一个数据元素无前驱,最后一个数据元素无后继。3.数据元素在表中的位置只取决于它自身的序号。在线性表上常用的运算有:初始化、求长度、取元素、修改、前插、删除、查找、排序。当前第40页\共有108页\编于星期五\22点1.4线性表的顺序存储结构及其插入与删除操作特点:

1.线性表中数据元素类型一致,只有数据域,存储空间利用率高。

2.所有元素所占的存储空间是连续的

3.各数据元素在存储空间中是按逻辑顺序依次存放的

4.做插入、删除时需移动大量元素。

5.空间估计不明时,按最大空间分配。

顺序存储结构:存储地址数据7891011121314zhaoqiansunlizhouwuzhengwang7基地址当前第41页\共有108页\编于星期五\22点元素an……..元素ai……..元素a2元素a1bb+mb+(i-1)*mb+(maxlen-1)*m存储地址内存状态Loc(元素i)=b+(i-1)*m顺序存储结构示意图(顺序表):首地址起始地址基地址每个元素所占用的存储单元个数当前第42页\共有108页\编于星期五\22点1-1插入运算ai-1…..a2a1alength…ai+1aixai-1…..a2a1alength…ai+1aiX插入算法的分析:

假设线性表中含有n个数据元素,在进行插入操作时,若假定在n+1个位置上插入元素的可能性均等,则平均移动元素的个数为:当前第43页\共有108页\编于星期五\22点1-2删除运算ai-1…..a2a1alength…ai+1aiai-1…..a2a1alength…ai+1删除算法的分析:

在进行删除操作时,若假定删除每个元素的可能性均等,则平均移动元素的个数为:总结:

顺序存储结构表示的线性表,在做插入或删除操作时,平均需要移动大约一半的数据元素。当线性表的数据元素量较大,并且经常要对其做插入或删除操作时,这一点需要值得考虑。当前第44页\共有108页\编于星期五\22点链表不具有的特点是A)不必事先估计存储空间B)可随机访问任一元素C)插入删除不需要移动元素 D)所需空间与线性表长度成正比顺序存储方法是把逻辑上相邻的结点存储在物理位置

【2】的存储单元中。长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【1】

。线性表若采用顺序存储结构时,要求内存中可用存储单元的地址

A)必须是连续的 B)部分地址必须是连续的

C)一定是不连续的D)连续不连续都可以例题讲解相邻当前第45页\共有108页\编于星期五\22点线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是

A)每个元素都有一个直接前件和直接后件

B)线性表中至少要有一个元素

C)表中诸元素的排列顺序必须是由小到大或由大到小

D)除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件线性表的顺序存储结构和线性表的链式存储结构分别是

A)顺序存取的存储结构、顺序存取的存储结构

B)随机存取的存储结构、顺序存取的存储结构

C)随机存取的存储结构、随机存取的存储结构

D)任意存取的存储结构、任意存取的存储结构下列叙述中,错误的是

A)数据的存储结构与数据处理的效率密切相关

B)数据的存储结构与数据处理的效率无关

C)数据的存储结构在计算机中所占的空间不一定是连续的

D)一种数据的逻辑结构可以有多种存储结构

当前第46页\共有108页\编于星期五\22点根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分成

A)动态结构和静态结构 B)紧凑结构和非紧凑结构

C)线性结构和非线性结构D)内部结构和外部结构当线性表采用顺序存储结构实现存储时,其主要特点是【1】

。随机存取当前第47页\共有108页\编于星期五\22点1.5线性表的链式存储结构及其插入与删除操作zhaoqiansunlizhouwuzhengwang/H存储地址数据17131925313743liqiansunwangwuzhaozhengzhou指针43131null377192531头指针单链表当前第48页\共有108页\编于星期五\22点baPbaP1-1单链表的插入运算xS在P所指向的结点之后插入新的结点1-2单链表删除运算La…aian^…ai-1ai+1要求:删除结点ai。当前第49页\共有108页\编于星期五\22点1-3.循环链表:

首尾相接的链表。将最后一个结点的空指针改为指向头结点,从任一结点出发均可找到其它结点。a1a2an∧a3L…..带头结点的单链表a1a2ana3L…..循环单链表特点:

可以从任何一个结点开始访问链表的所有结点.当前第50页\共有108页\编于星期五\22点1-4双向链表在每个结点中设置两个指针,一个指向后继,一个指向前驱。可直接确定一个结点的前驱和后继结点。可提高效率。datanextbefore当前第51页\共有108页\编于星期五\22点链表不具有的特点是A)不必事先估计存储空间B)可随机访问任一元素C)插入删除不需要移动元素D)所需空间与线性表长度成正比用链表表示线性表的优点是A)便于随机存取B)花费的存储空间较顺序存储少C)便于插入和删除操作D)数据元素的物理顺序与逻辑顺序相同长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【1】

。在单链表中,增加头结点的目的是

A)方便运算的实现B)使单链表至少有一个结点

C)标识表结点中首结点的位置

D)说明单链表是线性表的链式存储实现例题讲解当前第52页\共有108页\编于星期五\22点非空的循环单链表head的尾结点(由p所指向),满足

A)p->next==NULL B)p==NULLC)p->next=head D)p=head循环链表的主要优点是

A)不再需要头指针了

B)从表中任一结点出发都能访问到整个链表

C)在进行插入、删除运算时,能更好的保证链表不断开

D)已知某个结点的位置后,能够容易的找到它的直接前件当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为【2】。用链表表示线性表的突出优点是【1】。上溢插入、删除灵活当前第53页\共有108页\编于星期五\22点1.6栈和队列1.6.1栈和队列的定义栈和队列是两种特殊的线性表,它们是运算时要受到某些限制的线性表,故也称为限定性的数据结构。当前第54页\共有108页\编于星期五\22点1.栈栈——是限定仅在表尾进行插入或删除操作的线性表。栈顶——表尾。栈底——表头。空栈——不含元素的空表。…a1a2an栈底栈顶进栈出栈栈s=(a1,a2,…,an)后进先出(LIFO)当前第55页\共有108页\编于星期五\22点2.栈的顺序存储结构及其基本运算a2a1a1a2top

用顺序存储结构表示的栈:

顺序栈用一组连续的存储单元存放自栈底到栈顶的数据元素,一般用一维数组表示,设置一个简单变量top指示栈顶位置,称为栈顶指针,它始终指向待插入元素的位置。基本运算:压(进)栈:PUSH出栈:POP读栈顶元素:gettop当前第56页\共有108页\编于星期五\22点例子:topbaseEDCBAtopbaseCBAbasetopAbasetop空桟:top=base非空桟:top始终在桟顶元素的后一个位置桟的元素个数:top-base上溢下溢当前第57页\共有108页\编于星期五\22点3.队列定义:一种特殊的线性结构,限定只能在表的一端进行插入,在表的另一端进行删除的线性表。此种结构称为先进先出(FIFO)表。a1,

a2,

a3,

a4,…………

an-1,

an

队列示意图队头队尾当前第58页\共有108页\编于星期五\22点e3e4(c)e1,e2出队,e4入队

队满rear=3fronte1e2e3

(b)rearfront(b)e1,e2,e3入队4.队列的顺序存储结构及其基本运算

3210(a)rear=front=-1(队空)rearfront空队列:非空队列:队列元素个数:rear=front=-1front始终指向队头元素前一个位置,而rear始终指向队尾元素的位置rear-front当前第59页\共有108页\编于星期五\22点循环队列基本思想:把队列设想为一个循环的表,臆想elem[0]接在elem[maxsize-1]之后.……frontrearMaxsize-101e3e4

rear=3front当前第60页\共有108页\编于星期五\22点0012345frontABCDEFrear上溢0012345frontrear下溢front=rear队满front=rear队空当前第61页\共有108页\编于星期五\22点栈和队列的共同特点是

A)都是先进先出B)都是先进后出

C)只允许在端点处插入和删除元素D)没有共同点如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是

A)e3,e1,e4,e2 B)e2,e4,e3,e1C)e3,e4,e1,e2 D)任意顺序一些重要的程序语言(如C语言和Pascal语言)允许过程的递归调用。而实现递归调用中的存储分配通常用

A)栈 B)堆C)数组 D)链表例题讲解当前第62页\共有108页\编于星期五\22点栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是

A)ABCED B)DCBEAC)DBCEA D)CDABE栈通常采用的两种存储结构是

A)线性存储结构和链表存储结构 B)散列方式和索引方式

C)链表存储结构和数组D)线性存储结构和非线性存储结构栈和队列通常采用的存储结构是【1】

。下列数据结构中,按先进后出原则组织数据的是

A)线性链表B)栈C)循环链表 D)顺序表▽当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为

【2】。链表存储结构和数组上溢当前第63页\共有108页\编于星期五\22点由两个栈共享一个存储空间的好处是A)减少存取时间,降低下溢发生的机率B)节省存储空间,降低上溢发生的机率C)减少存取时间,降低上溢发生的机率D)节省存储空间,降低下溢发生的机率自由区lefttoprighttop0MAXNUM-1两个栈共享邻接空间当前第64页\共有108页\编于星期五\22点下列关于栈的叙述中正确的是A)在栈中只能插入数据B)在栈中只能删除数据C)栈是先进先出的线性表D)栈是后进先出的线性表下列关于队列的叙述中正确的是A)在队列中只能插入数据B)在队列中只能删除数据C)队列是先进先出的线性表D)队列是后进先出的线性表当前第65页\共有108页\编于星期五\22点1.7.1树的定义由一个或多个结点组成的有限集合。仅有一个根结点,结点间有明显的层次结构关系。

A

C

GT2D

HIT3J

M

BEL

KT1F现实世界中,能用树的结构表示的例子:学校的行政关系、书的层次结构、人类的家族血缘关系等。1.7树当前第66页\共有108页\编于星期五\22点介绍几个概念:结点(Node):树中的元素,包含数据项及若干指向其子树的分支。结点的度(Degree):结点拥有的子树数。结点的层次:从根结点开始算起,根为第一层。叶子(Leaf):度为零的结点,也称端结点。孩子(Child):结点子树的根称为该结点的孩子结点。兄弟(Sibling):同一双亲的孩子。双亲(Parent):孩子结点的上层结点,称为这些结点的双亲。树的深度(Depth):树中结点的最大层次数。树的度:结点所具有的最大的度.森林(Forest):M棵互不相交的树的集合。

A

C

GD

HI

J

M

BEL

KT1F当前第67页\共有108页\编于星期五\22点1.7.2二叉树(BinaryTree)1、二叉树的定义及其性质

(1)二叉树的定义二叉树的五种基本形态

二叉树一种特殊的树形结构,特点是树中每个结点最多只能有两棵子树(即二叉树中不存在度大于2的结点),且子树有左右之分,次序不能颠倒。

空二叉树

仅有根结点

右子树为空

左子树为空左右子树均非空当前第68页\共有108页\编于星期五\22点二叉树是n(n0)个结点的有限集合。它或为空数(n=0),或由一个根结点和两棵分别称为根的左子树和右子树的互不相交的二叉树组成。特别要注意:二叉树不是一般树的特殊情况,而是另一种树形结构.aabb两棵不同的二叉树ab一棵树当前第69页\共有108页\编于星期五\22点性质1:二叉树的第i层上至多有2i-1(i1)个结点。(2)二叉树的基本性质423167891011121314155第三层上(i=3),有23-1=4个节点。第四层上(i=4),有24-1=8个节点。性质2:深度为k的二叉树中至多含有2k-1个结点。当前第70页\共有108页\编于星期五\22点性质3:对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1。证明:设n1为二叉树T中度为1的结点数;∵二叉树中所有结点的度均小于或等于2∴其结点总数为:n=n0+n1+n2∵二叉树中除了根结点外,其余结点都有一个分支进入设分支总数为B;则n=B+1;∵二叉树的分支是由度为1或2的结点射出的∴B=n1+2*n2

∴n=n1+2*n2+1=n0+n1+n2

n0=n2+1ABFCJM一般树当前第71页\共有108页\编于星期五\22点★满二叉树423167891011121314155特点:每一层上都含有最大结点数。★完全二叉树423167891011125特点:(1)除最后一层外,每一层都取最大结点数,(2)最后一层结点都集中在该层最左边的若干位置。当前第72页\共有108页\编于星期五\22点性质4:具有n个结点的完全二叉树的深度为112345678910121例:n=2k=2n=6k=3n=7k=3n=8k=4n=12k=4当前第73页\共有108页\编于星期五\22点性质5:如果对一棵有n个结点的完全二叉树的结点按层序编号,则对任一结点i(1=<i=<n)有:(2)如果2i>n,则结点i无左孩子(结点i为叶子结点);

否则其左孩子Lchild(i)是结点2i。

(3)如果2i+1>n,则结点i无右孩子;

否则其右孩子Rchild(i)是结点2i+1。(1)如果i=1,则结点i是二叉树的根,无双亲;

如果i>1,则双亲Parent(i)是结点|i/2|。

当前第74页\共有108页\编于星期五\22点例:112345678910121i=6其双亲为|i/2|=3;其左孩子为2*i=12;i=1是树的根,无双亲;其左孩子为2*i=2,右孩子为2*i+1=3.∵2*i=18>122*i+1=19>12∴其无左、右孩子。∵2*i+1=13>12∴其无右孩子。i=9其双亲为|i/2|=

4

;当前第75页\共有108页\编于星期五\22点★树与二叉树的区别A.树和二叉树的结点个数最少都可为0。B.树中结点的最大度数没有限制,二叉树结点最大度数为2。C.树的结点无左、右之分,二叉树的结点子树有明确的左、右之分。3个结点的树3个结点的二叉树当前第76页\共有108页\编于星期五\22点2、二叉树的存储结构

(2)链式存储结构T[16]若父结点在数组中i下标处,其左孩子在2*i处,右孩子在2*i+1处。11ABcFED

●●●●●●●●●124

8

910563712131415(1)顺序存储结构(1)顺序存储结构2h-1=24-1=15用一组连续的存储单元存放二叉树的数据元素。结点在数组中的相对位置蕴含着结点之间的关系。0000FE000DC0BA15141312111098765432100一般二叉树必须按完全二叉树的形式存储,将造成存储的浪费。当前第77页\共有108页\编于星期五\22点(2)、链式存储结构链式存储结构二叉链表三叉链表二叉链表:二叉链表的结点包含三个域:数据域、左、右指针域。例:ABCDEFGA^B^C^D^E^F^^G^当前第78页\共有108页\编于星期五\22点三叉链表:三叉链表的结点包含四个域:数据域、左、右、双亲指针域。例:ABCDEFGA^^B^C^D^E^F^^G^链式存储结构的特点:(1)操作便于实现(2)结构复杂当前第79页\共有108页\编于星期五\22点1.7.3二叉树的遍历查找某个结点,或对二叉树中全部结点进行某种处理,就需要遍历。(1)遍历定义及遍历算法遍历是指按某条搜索路线寻访树中每个结点,且每个结点只被访问一次。按先左后右的原则,一般使用三种遍历:先序遍历(DLR):

访问根结点,按先序遍历左子树,按先序遍历右子树。中序遍历(LDR):

按中序遍历左子树,访问根结点,按中序遍历右子树。后序遍历(LRD):

按后序遍历左子树,按后序遍历右子树,访问根结点。二叉树为空时,执行空操作,即空二叉树已遍历完。当前第80页\共有108页\编于星期五\22点

(2)遍历算法先序遍历:DLR中序遍历:LDR后序遍历:LRDADBCDLRADLRDLR>B>>D>>CDLR以先序遍历DLR为例演示遍历过程ABDCBDACDBCA当前第81页\共有108页\编于星期五\22点e-+a*b-cd/fLDRLDRa+LDRb*LDRc-d-LDRe/f中序遍历示图当前第82页\共有108页\编于星期五\22点已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是

A)acbedB)decabC)deabc D)cedba已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为

A)GEDHFBCA B)DGEBHFCAC)ABCDEFGH D)ACBFEDHG树是结点的集合,它的根结点数目是

A)有且只有1 B)1或多于1C)0或1 D)至少2下列叙述中正确的是

A)线性表是线性结构 B)栈与队列是非线性结构

C)线性链表是非线性结构 D)二叉树是线性结构例题讲解当前第83页\共有108页\编于星期五\22点在深度为5的满二叉树中,叶子结点的个数为

A)32 B)31C)16 D)15若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是

A)bdgcefhaB)gdbecfhaC)bdgaechfD)gdbehfca在树结构中,树根结点没有【1】。具有3个结点的二叉树有

A)2种形态B)4种形态C)7种形态D)5种形态设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为

A)12 B)13C)14 D)15双亲结点当前第84页\共有108页\编于星期五\22点设有下列二叉树:

对此二叉树前序遍历的结果为A)ZBTTCPXAB)ATBZXCTPC)ZBTACTXPD)ATBZXCPT设有下列二叉树:对此二叉树的中序遍历的结果为A)ABCDEFB)DBEAFCC)ABDECFD)DEBFCA当前第85页\共有108页\编于星期五\22点设树T的度为4,其中度为1、2、3、4的结点个数分别为4、2、1、1。则T中的叶子结点数为A)8B)7C)6D)5设一棵完全二叉树共有700个结点,则该二叉树中有()个叶子结点。

350当前第86页\共有108页\编于星期五\22点解法一:

根据二叉树的性质3可知:叶子结点数n0=n2+1,

根据完全二叉树的概念可知,度为1的结点数要么为1,要么为0,

二叉树总结点数N=n0+n1+n2=2n0+n1-1,

得出n0=(N+1-n1)/2=N/2向上取整,

所以本题答案是350个叶子结点。解法二:

易求出总层数和末层叶子数。总层数k=log2N向上取整=10;

且前9层总结点数为2^9-1=511(完全二叉树的前k-1层肯定是满的)

所以末层叶子数为700-511=189个。

请注意叶子结点总数≠末层叶子数!

还应当加上第k-1层(靠右边)的0度结点个数。

末层的189个叶子只占据了上层的95个结点(189/2),上层(k=9)右边的0度结点数还有2^(9-1)-95=161个。

所以,全部叶子数=189(末层)+161(k-1层)=350个。当前第87页\共有108页\编于星期五\22点在一个容量为15的循环队列中,若头指针front=6,尾指针rear=9,则该循环队列中共有()个元素。设一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为()。3DEBFCA当前第88页\共有108页\编于星期五\22点1.8查找和排序顺序查找与二分查找算法基本排序算法(交换类排序、选择类排序、插入类排序)当前第89页\共有108页\编于星期五\22点1.8.1查找查找是在一个给定的数据结构中,根据给定的条件查找满足条件的结点。不同的数据结构采用不同的查找方法。查找的效率直接影响数据处理的效率。查找的结果:查找成功:找到满足条件的结点查找失败:找不到满足条件的结点。当前第90页\共有108页\编于星期五\22点1.8.1.1顺序查找(线性查找)◆查找过程:

对给定的一关键字K,从线性表的一端开始,逐个进行记录的关键字和K的比较,直到找到关键字等于K的记录或到达表的另一端。◆可以采用从前向后查,也可采用从后向前查的方法。◆在平均情况下,大约要与表中一半以上元素进行比较,效率较低。平均查找长度较大。最好情况:1最坏情况:n◆在下面两种情况下只能采取顺序查找:

a.线性表为无序表(元素排列是无序的);

b.即使是有序线性表,但采用的是链式存储结构。当前第91页\共有108页\编于星期五\22点1.8.1.2折半查找(二分法查找)思想:先确定待查找记录所在的范围,然后逐步缩小范围,直到找到或确认找不到该记录为止。前提:必须在具有顺序存储结构的有序表中进行。分三种情况:

1)若中间项的值等于x,则说明已查到。

2)若x小于中间项的值,则在线性表的前半部分查找;

3)若x大于中间项的值,则在线性表的后半部分查找。特点:比顺序查找方法效率高。最坏的情况下,需要比较log2n次。当前第92页\共有108页\编于星期五\22点1.8.2排序1.8.2.1概述

1、排序的功能:

将一个数据元素(或记录)的任意序列,重新排成一个按关键字有序的序列。

2、排序过程的组成步骤:首先比较两个关键字的大小;然后将记录从一个位置移动到另一个位置。当前第93页\共有108页\编于星期五\22点排序方法插入类排序选择类排序交换类排序归并排序简单插入排序希尔排序简单选择排序堆排序起泡排序快速排序当前第94页\共有108页\编于星期五\22点1.8.2.2交换排序交换排序的特点在于交换。有冒泡和快速排序两种。1、冒泡排序(起泡排序)思想:小的浮起,大的沉底。从左端开始比较。第一趟:第1个与第2个比较,大则交换;第2个与第3个比较,大则交换,……关键字最大的记录交换到最后一个位置上;第二趟:对前n-1个记录进行同样的操作,关键字次大的记录交换到第n-1个位置上;依次类推,则完成排序。当前第95页\共有108页\编于星期五\22点第六趟排序后第五趟排序后第四趟排序后第三趟排序后第二趟排序后第一趟排序后初始关键字思想:小的浮起,大的沉底。4936416511783665364156364165413641561178363641491156492525251149495611111125252525排序n个记录最多需要n-1趟冒泡排序正序:比较次数为O(n-1)

逆序:比较次数为O(n(n-1)/2)

适合于数据较少的情况。

当前第96页\共有108页\编于星期五\22点2、快速排序(对冒泡排序的改进)思想:通过一趟排序将待排序列分成两部分,使其中一部分记录的关键字均比另一部分小,再分别对这两部分排序,以达到整个序列有序。

如,经过“一次划分”,将关键字序列

52,49,80,36,14,58,61,97,23,75调整为:23,49,14,36,(52)58,61,97,80,75当前第97页\共有108页\编于星期五\22点2、快速排序(对冒泡排序的改进)时间复杂度:O(nlog2n)当待排序列逆序时,蜕变成冒泡排序,时间复杂度:O(n(n-1)/2)当前第98页\共有108页\编于星期五\22点1.8.2.3插入排序

简单插入、希尔排序1、简单插入排序:

基本思想:从数组的第2号元素开始,顺序从数组中取出元素,并将该元素插入到其左端已排好序的数组的适当位置上。当前第99页\共有108页\编于星期五\22点该算法适合于n较小的情况,时间复杂度为O(n2).待排元素序列:[53]2736156942第一次排序:[2753]361569

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论