第12章-数据结构与算法_第1页
第12章-数据结构与算法_第2页
第12章-数据结构与算法_第3页
第12章-数据结构与算法_第4页
第12章-数据结构与算法_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

数据结构与算法

第12章_数据结构与算法ppt课件(全)公共基础知识考试大纲一、数据结构与算法二、程序设计基础三、软件工程基础四、数据库设计基础包含四部分内容:第12章_数据结构与算法ppt课件(全)公共基础知识考试大纲1.掌握算法的基本概念。2.掌握基本数据结构及其操作。3.掌握基本排序和查找算法。4.掌握逐步求精的结构化程序设计方法。5.掌握软件工程的基本方法,具有初步应用相关技术进行软件开发的能力。6.掌握数据库的基本知识,了解关系数据库的设计。基本要求:第12章_数据结构与算法ppt课件(全)公共基础知识考试大纲1.算法的基本概念;算法复杂度的概念和意义。2.数据结构的定义;数据的逻辑结构与存储结构;数据结构的图形表示;线性结构与非线性结构的概念。3.线性表的定义;线性表的顺序存储结构及其插入与删除运算。4.栈和队列的定义;栈和队列的顺序存储结构及其基本运算。数据结构与算法考试内容:第12章_数据结构与算法ppt课件(全)公共基础知识考试大纲5.线性单链表、双向链表与循环链表的结构及其基本运算。6.树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历。7.顺序查找与二分法查找算法;基本排序算法(交换类排序,选择类排序,插入类排序)。数据结构与算法考试内容:第12章_数据结构与算法ppt课件(全)一、数据结构与算法

用计算机解决实际问题,需要编写程序。一个程序应包括两个方面:

数据结构(DataStructure),对数据的描述,即在程序中要指定数据的类型和数据的组织形式;算法(Algorithm),是对操作的描述,即操作步骤。这就是著名计算机科学家沃思(NikiklausWirth)提出的一个公式:

程序=数据结构+算法一、数据结构与算法第12章_数据结构与算法ppt课件(全)考点1算法的基本概念算法(Algorithm):

是指解题方案的准确而完整的描述。算法的基本特征:(1)有穷性(Finiteness),一个算法应包含有限的操作步骤而不能是无限的。(2)确定性(Definiteness),算法中的每一个步骤都应该是确定的,而不应当是含糊的、模棱两可的。(3)可行性(Effectiveness),一个算法应该可以有效地执行,即算法描述的每一步都可通过已实现的基本运算执行有限次来完成。12.1算法第12章_数据结构与算法ppt课件(全)算法(Algorithm):

是指解题方案的准确而完整的描述。算法的基本特征:(4)输入(Input),是指在执行算法时需要从外界取得必要的信息。(5)输出(Output),算法的目的是为了求解,“解”就是输出。一个算法可以有一个或多个输出。{(4)拥有足够的情报。算法中各种运算总是要施加到各个运算对象上,而这些运算对象又可能具有某种初始状态,这就是算法执行的起点或依据。}12.1算法考点1算法的基本概念第12章_数据结构与算法ppt课件(全)算法的基本要素:一个算法有两个基本要素:一个是对数据对象的运算和操作,另一个是算法的控制结构。对数据对象的运算和操作:

①算术运算:主要包括加、减、乘、除等运算。

②逻辑运算:主要包括“逻辑与”、“逻辑或”、“逻辑非”等运算。

③关系运算:主要包括“大于”、“大于或等于”、“小于”、“小于或等于”、“等于”、“不等于”等运算。

④数据传输:主要包括赋值、输入、输出等操作。考点1算法的基本概念第12章_数据结构与算法ppt课件(全)算法的基本要素:一个算法有两个基本要素:一个是对数据对象的运算和操作,另一个是算法的控制结构。算法的控制结构:算法中各种操作之间的执行顺序称为算法的控制结构。算法的控制结构给出了算法的基本框架。

描述算法的工具通常有:传统流程图、N—S结构化流程图、算法描述语言等。一个算法一般都可以用顺序结构、选择结构和循环结构这三种基本控制结构组合而成。考点1算法的基本概念第12章_数据结构与算法ppt课件(全)算法设计基本方法:

(1)列举法列举法就是根据所要解决的问题,把所有可能的情况都一一列举出来,并用问题中给定的条件来检验哪些是需要的,哪些是不需要的。

(2)归纳法归纳法的基本思想是通过列举少量的特殊情况,经过分析最后找出一般的关系。

(3)递推法递推法是指从已知的初始条件出发,逐步推出所要求的结果。考点1算法的基本概念第12章_数据结构与算法ppt课件(全)算法设计基本方法:

(4)递归法

在解决某些复杂问题时,为了降低问题的复杂程度(如问题的规模等),可以将问题逐层分解,最后归结为一些最简单的问题。

(5)减半递推法有些问题的复杂程度与问题本身的规模大小有关。

“减半”是指将问题的规模减半,而问题的性质不变;

“递推”是指重复“减半”的过程。减半递推法又称为二分法。考点1算法的基本概念第12章_数据结构与算法ppt课件(全)考点2算法复杂度算法的复杂度:

(是一个经常考查的内容,在笔试考试中出现的几率为70%,此考点为重点识记内容。)

(1)算法的时间复杂度

算法的时间复杂度是指执行算法所需要的计算工作量。同一个算法用不同的语言实现,或者用不同的编译程序进行编译,或者在不同的计算机上运行,效率均不同。这表明使用绝对的时间单位衡量算法的效率是不合适的。

算法的时间复杂度可表示为:

其中O表示数量级,n是问题的规模,f(n)是算法的工作量。第12章_数据结构与算法ppt课件(全)算法的复杂度:

(是一个经常考查的内容,在笔试考试中出现的几率为70%,此考点为重点识记内容)

(2)算法的空间复杂度

算法的空间复杂度是指执行算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占用的存储空间以及算法执行过程中所需要的额外空间。其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间(例如,在链式结构中,除了要存储数据本身外,还需要存储链接信息)。在许多实际问题中,为了减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减少不必要的额外空间。考点2算法复杂度第12章_数据结构与算法ppt课件(全)练习1:算法的时间复杂度是指_______。A)执行算法程序所需要的时间B)算法程序的长度C)算法执行过程中所需要的基本运算次数D)算法程序中的指令条数练习2:算法的空间复杂度是指_______。A)算法程序的长度B)算法程序中的指令条数C)算法程序所占的存储空间D)算法执行过程中所需要的存储空间CD考点2算法复杂度第12章_数据结构与算法ppt课件(全)考点3数据结构的定义

数据结构作为计算机的一门学科,主要研究和讨论以下三个方面:(1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构(LogicalStructure);(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构(StorageStructure);(3)对各种数据结构进行的运算。数据(Data)是计算机可以保存和处理的信息。数据元素(DataElement)是数据的基本单位,即数据集合中的个体。有时也把数据元素称作结点、记录等。12.2数据结构的基本概念第12章_数据结构与算法ppt课件(全)

数据处理,是指对数据集合中的各元素以各种方式进行运算,包括插入、删除、查找、更改等运算,也包括对数据元素进行分析。

数据结构(DataStructure),是指相互有关联的数据元素的集合。例如,向量和矩阵就是数据结构,在这两个数据结构中,数据元素之间有着位置上的关系。

数据元素的含义非常广泛,现实世界中存在的一切个体都可以是数据元素。例如,描述一年四季的季节名“春、夏、秋、冬”,可以作为季节的数据元素;表示家庭成员的名字“父亲、儿子、女儿”,可以作为家庭成员的数据元素。考点3数据结构的定义第12章_数据结构与算法ppt课件(全)

数据对象:是性质相同的数据元素的集合,是数据的一个子集。1.数据的逻辑结构数据的逻辑结构:是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合中的若干关系来表示。

数据的逻辑结构与它们在计算机中的存储位置无关。数据的逻辑结构有两个要素:

一是数据元素的集合,通常记为D;二是D上的关系,它反映了数据元素之间的前后件关系,通常记为R。考点3数据结构的定义第12章_数据结构与算法ppt课件(全)一个数据结构可以表示成B=(D,R)其中B表示数据结构。为了反映D中各数据元素之间的前后件关系,一般用二元组来表示。

例一年四季的数据结构可以表示成B=(D,R)D={春,夏,秋,冬}R={(春,夏),(夏,秋),(秋,冬)}

例家庭成员数据结构可以表示成B=(D,R)D={父亲,儿子,女儿}R={(父亲,儿子),(父亲,女儿)}考点3数据结构的定义第12章_数据结构与算法ppt课件(全)2.数据的存储结构

数据的存储结构,数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。由于数据元素在计算机存储空间中的位置关系可能与逻辑关系不同,因此,为了表示存放在计算机存储空间中的各数据元素之间的逻辑关系(即前后件关系),在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。考点3数据结构的定义第12章_数据结构与算法ppt课件(全)2.数据的存储结构一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有,顺序、链接、索引等存储结构。

顺序存储,它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。由此得到的存储表示称为顺序存储结构。

链接存储,它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。由此得到的存储表示称为链式存储结构。

索引存储,除建立存储结点信息外,还建立附加的索引表来标识结点的地址。考点3数据结构的定义第12章_数据结构与算法ppt课件(全)3.数据结构的图形表示

在数据结构的图形表示中,对于数据集合D中的每一个数据元素用中间标有元素值的方框表示,称之为数据结点,简称结点。对于关系R中的每一个二元组,用一条有向线段从前件结点指向后件结点。在数据结构中,没有前件的结点称为根结点;没有后件的结点称为终端结点(也称为叶子结点)。考点3数据结构的定义第12章_数据结构与算法ppt课件(全)考点4线性结构与非线性结构4.线性结构与非线性结构一个数据结构可以是空的,即一个数据元素都没有,称为空的数据结构。一般将数据结构分为两大类:线性结构与非线性结构。线性结构,如果一个非空的数据结构满足下面两个条件:(1)有且只有一个根结点;(2)每个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构。线性结构又称线性表。第12章_数据结构与算法ppt课件(全)4.线性结构与非线性结构如一年四季这个数据结构属于线性结构。需要说明的是,在一个线性结构中插入或删除任何一个结点后还应是线性结构。非线性结构,如果一个数据结构不是线性结构,则称为非线性结构。如家庭成员之间辈分关系的数据结构是非线性结构。考点4线性结构与非线性结构第12章_数据结构与算法ppt课件(全)考点5线性表的基本概念

线性表(LinearList),由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。线性表是由n(n≥0)个数据元素组成的一个有限序列,表中的每一个数据元素,除了第一个外,有且只有一个前件,除了最后一个外,有且只有一个后件。线性表中数据元素的个数称为线性表的长度。线性表可以为空表。12.3线性表及其顺序存储结构第12章_数据结构与算法ppt课件(全)

线性表的顺序存储结构,用顺序存储结构来存储的线性表也称为顺序表。其特点如下:(1)顺序表中所有元素所占的存储空间是连续的;(2)顺序表中各数据元素在存储空间中是按逻辑顺序依次存放的。在顺序表中,其前后件两个元素在存储空间中是紧邻的,且前件元素一定存储在后件元素的前面。12.3线性表及其顺序存储结构考点5线性表的基本概念第12章_数据结构与算法ppt课件(全)顺序表的插入、删除运算

(1)顺序表的插入运算:

在一般情况下,要在第i(1≤i≤n)个元素之前插入一个新元素时,首先要从最后一个(即第n个)元素开始,直到第i个元素之间共n-i+1个元素依次向后移动一个位置,移动结束后,第i个位置就被空出,然后将新元素插入到第i

项。插入结束后,线性表的长度就增加了1。顺序表的插入运算时需要移动元素,在等概率情况下,平均需要移动n/2个元素。考点5线性表的基本概念第12章_数据结构与算法ppt课件(全)顺序表的插入、删除运算

(2)顺序表的删除运算:在一般情况下,要删除第i(1≤i≤n)个元素时,则要从第i+1个元素开始,直到第n个元素之间共n-i个元素依次向前移动一个位置。删除结束后,线性表的长度就减小了1。进行顺性表的删除运算时也需要移动元素,在等概率情况下,平均需要移动(n-1)/2个元素。顺序表的插入、删除运算效率很低。考点5线性表的基本概念第12章_数据结构与算法ppt课件(全)1.栈的基本概念栈(Stack)是一种特殊的线性表,它是限定仅在一端进行插入和删除运算的线性表。其中,允许插入与删除的一端称为栈顶(top),而不允许插入与删除的另一端称为栈底(bottom)。栈顶元素总是最后被插入的那个元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。栈是按照“先进后出”(FILO,FistInLastOut)或“后进先出”(LIFO,LastInFistOut)的原则操作数据的。由此可以看出,栈具有记忆作用。考点6栈和队列12.4栈和队列第12章_数据结构与算法ppt课件(全)2.栈的顺序存储及基本运算栈的顺序存储结构是利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,并设有指针top指向栈顶元素的位置。用一维数组S(1∶m)作为栈的顺序存储空间,其中m为最大容量。在栈的顺序存储空间S(1∶m)中,S(bottom)为栈底元素,S(top)为栈顶元素。top=0表示栈空;top=m表示栈满。栈的基本运算有三种:入栈、退栈与读栈顶元素。考点6栈和队列12.4栈和队列第12章_数据结构与算法ppt课件(全)

(1)入栈运算:入栈运算是指在栈顶位置插入一个新元素。首先将栈顶指针加一(即top加1),然后将新元素插入到栈顶指针指向的位置。当栈顶指针已经指向存储空间的最后一个位置时,说明栈空间已满,不可能再进行入栈操作。这种情况称为栈"上溢"错误。

(2)退栈运算:退栈是指取出栈顶元素并赋给一个指定的变量。首先将栈顶元素(栈顶指针指向的元素)赋给一个指定的变量,然后将栈顶指针减一(即top减1)。当栈顶指针为0时,说明栈空,不可进行退栈操作。这种情况称为栈的"下溢"错误。

(3)读栈顶元素:读栈顶元素是指将栈顶元素赋给一个指定的变量。这个运算不删除栈顶元素,只是将它赋给一个变量,因此栈顶指针不会改变。当栈顶指针为0时,说明栈空,读不到栈顶元素。考点6栈和队列第12章_数据结构与算法ppt课件(全)3.队列的基本概念

队列(Queue),是一种特殊的线性表,它是限定仅在表的一端进行插入,而在表的另一端进行删除的线性表。在队列中,允许插入的一端称为队尾,允许删除的一端称为队头。队列是按照“先进先出”(FIFO,FistInFistOut)或“后进后出”(LILO,LastInLastOut)的原则操作数据的,因此,队列也被称为“先进先出”表或“后进后出”表。在队列中,通常用指针front指向队头,用rear指向队尾。考点6栈和队列第12章_数据结构与算法ppt课件(全)3.队列的基本概念

队列的基本运算有两种:往队列的队尾插入一个元素称为入队运算,从队列的队头删除一个元素称为出队运算。在队列的末尾插入一个元素(入队运算)只涉及队尾指针rear的变化,而要删除队列中的队头元素(出队运算)只涉及队头指针front的变化。与栈类似,在程序设计语言中,用一维数组作为队列的顺序存储空间。用顺序存储结构存储的队列称为顺序队列。考点6栈和队列第12章_数据结构与算法ppt课件(全)4.循环队列及其运算

循环队列(CircularQueue),为了充分利用存储空间,在实际应用中,队列的顺序存储结构一般采用循环队列的形式,将顺序存储的队列的最后一个位置指向第一个位置,从而使顺序队列形成逻辑上的环状空间,称为循环队列(CircularQueue)。在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置,因此,从头指针front指向的后一个位置直到队尾指针rear指向的位置之间,所有的元素均为队列中的元素。

循环队列中元素的个数=rear-front。考点6栈和队列第12章_数据结构与算法ppt课件(全)4.循环队列及其运算

循环队列主要有两种基本运算:入队运算与出队运算。每进行一次出队运算,队头指针就加1。当队头指针front=n+1时,则设置front=1。每进行一次入队运算,队尾指针就加1。当队尾指针rear=n+1时,则设置rear=1。

队列空与队列满的条件:队列空的条件为sign=0;队列满的条件为sign=l,且front=rear。考点6栈和队列第12章_数据结构与算法ppt课件(全)1.线性链表的基本概念

在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域,另一部分用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。链式存储方式既可用于表示线性结构,也可用于表示非线性结构。

(1)线性链表线性表的链式存储结构称为线性链表。考点7线性链表的基本概念12.5线性链表第12章_数据结构与算法ppt课件(全)在线性链表中,一般用一个专门的指针HEAD指向线性链表中第一个数据元素的结点,即用HEAD存放线性表中第一个数据元素的存储结点的地址。在线性表中,最后一个元素没有后件,所以,线性链表中最后一个结点的指针域为空(用NULL或0表示),表示链表终止。考点7线性链表的基本概念12.5线性链表第12章_数据结构与算法ppt课件(全)线性链表的存储结构

设有4个学生的某门功课的成绩分别是a1,a2,a3,a4,这4个数据在内存中的存储单元地址分别是1248、1488、1366和1522,其链表结构如图a所示。实际上,常用图b来表示它们的逻辑关系。考点7线性链表的基本概念

图a线性链表的物理状态

图b线性链表的逻辑状态第12章_数据结构与算法ppt课件(全)双向链表的存储结构

在一些应用中,对线性链表中的每个结点设置两个指针域,一个指向其前件结点,称为前件指针或左指针;另一指向其后件结点,称为后件指针或右指针。这样的线性链表称为双向链表,其逻辑状态如图所示。考点7线性链表的基本概念

图双向线性链表的物理状态第12章_数据结构与算法ppt课件(全)

(2)带链的栈用链式存储结构来存储的栈,称为带链的栈,简称为链栈。考点7线性链表的基本概念

图栈在链式存储时的逻辑状态示意图第12章_数据结构与算法ppt课件(全)

(3)带链的队列

用链式存储结构来存储的队列,称为带链的队列,简称为链队列。考点7线性链表的基本概念

图队列在链式存储时的逻辑状态示意图第12章_数据结构与算法ppt课件(全)

在链式结构中,存储空间位置关系与逻辑关系是什么?在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。考点7线性链表的基本概念第12章_数据结构与算法ppt课件(全)考点7线性链表的基本概念2.线性链表的基本运算(1)在线性链表中包含指定元素的结点之前插入一个新元素。在线性链表中插入元素时,不需要移动数据元素,只需要修改相关结点指针即可,也不会出现“上溢”现象。

例假设线性链表如图(a)所示。现在要在线性链表中包含元素a的结点之前插入一个包含新元素b的结点。其插入过程如下:第12章_数据结构与算法ppt课件(全)考点7线性链表的基本概念(a)原来的线性链表(b)申请一个由p所指向的结点(d)将新结点插入到指定结点之前(c)在线性链表中找到由q所指向的结点第12章_数据结构与算法ppt课件(全)考点7线性链表的基本概念2.线性链表的基本运算(2)在线性链表中删除包含指定元素的结点。在线性链表中删除元素时,也不需要移动数据元素,只需要修改相关结点指针即可。

(3)将两个线性链表按要求合并成一个线性链表。

(4)将一个线性链表按要求进行分解。

(5)逆转线性链表。

(6)复制线性链表。第12章_数据结构与算法ppt课件(全)考点7线性链表的基本概念2.线性链表的基本运算(7)线性链表的排序。(8)线性链表的查找。

注:线性链表不能随机存取。

在链表中,即使知道被访问结点的序号i,也不能像顺序表中那样直接按序号i访问结点,而只能从链表的头指针出发,顺着链域逐个结点往下搜索,直至搜索到第i个结点为止。因此,链表不是随机存储结构。第12章_数据结构与算法ppt课件(全)考点7线性链表的基本概念3.循环链表循环链表(CircularLinkedList)的结构具有下面两个特点:(1)在循环链表中增加了一个表头结点。表头结点的数据域为任意或者根据需要来设置,指针域指向线性表的第一个元素的结点。循环链表的头指针指向表头结点。(2)循环链表中最后一个结点的指针域不是空的,而是指向表头结点。即在循环链表中,所有结点的指针构成了一个环状链第12章_数据结构与算法ppt课件(全)考点7线性链表的基本概念3.循环链表

下图为循环链表的逻辑状态示意图,图(a)是一个非空的循环链表,图(b)是一个空的循环链表。

(a)非空循环链表(b)空循环链表第12章_数据结构与算法ppt课件(全)考点8树与二叉树及其基本性质1.树的基本概念

树(tree),是一种简单的非线性结构。在树结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点。每一个结点可以有多个后件,它们称为该结点的子结点。没有后件的结点称为叶子结点。一个结点所拥有的后件个数称为该结点的度。

叶子结点的度为0。在树中,所有结点中的最大的度称为树的度。树的最大层次称为树的深度。12.6树与二叉树在笔试考试中,一般是一个必考的内容,出现的几率为100%,此考点为重点掌握内容。重点识记树及二叉树的性质。第12章_数据结构与算法ppt课件(全)考点8树与二叉树及其基本性质根结点:父结点:

除根结点外,每个结点只有一个前件,称为该结点的父结点。叶子结点:节点的度数:

根结点A的度为3;B的度为2;C的度为1;D的度数为3;叶子结点的度为0。树的度:图树的结构图AE、F、G、H、I、J

3。3。树的深度:第12章_数据结构与算法ppt课件(全)考点8树与二叉树及其基本性质2.二叉树及其基本运算

二叉树(BinaryTree),是一种非常有用的非线性数据结构。二叉树与前面介绍的树结构不同,但它与树结构很相似,并且,有关树结构的所有术语都可以用到二叉树上。二叉树的特点:①非空二叉树只有一个根结点;②每个结点最多有两棵子树,且分别称为该结点的左子树与右子树。第12章_数据结构与算法ppt课件(全)考点8树与二叉树及其基本性质在二叉树中,每个结点的度最大为2,而树结构中的每一个结点的度可以是任意的。另外,二叉树中的每一个结点的子树要区分为左子树与右子树。例如,下图中所示的是4颗不同的二叉树。第12章_数据结构与算法ppt课件(全)考点8树与二叉树及其基本性质满二叉树与完全二叉树:

(1)满二叉树在一颗二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子结点都在同一层上,这样的二叉树称为满二叉树。下图分别是深度为2、3的满二叉树。第12章_数据结构与算法ppt课件(全)考点8树与二叉树及其基本性质满二叉树与完全二叉树:

(2)完全二叉树完全二叉树是指除最后一层外,每一层上的结点数均达到最大值,而在最后一层上只缺少右边的若干结点。下图是两颗深度为3的完全二叉树。第12章_数据结构与算法ppt课件(全)考点8树与二叉树及其基本性质二叉树的基本性质:性质1在二叉树中,第i层的结点数最多为2i-1个(i≥1)。性质2在深度为k的二叉树中,结点总数最多为2k-1个(k≥1)。性质3对任意一棵二叉树,度为0的结点(即叶子结点)总是比度为2的结点多一个。

性质4(1)具有n个结点的二叉树,其深度至少为[log2n]+1,其中[log2n]表示取log2n的整数部分。(2)具有n个结点的完全二叉树的深度为[log2n]+1。第12章_数据结构与算法ppt课件(全)考点8树与二叉树及其基本性质二叉树的基本性质:

性质5如果对一棵有n个结点的完全二叉树的结点从1到n按层序(每一层从左到右)编号,则对任一结点i(1≤i≤n),有(1)如果i=1,则结点i是二叉树的根,它没有父结点;如果i>1,则其父结点编号为[i/2]。(2)如果2i>n,则结点i无左子结点(结点i为叶子结点);否则,其左子结点是结点2i。(3)如果2i+1>n,则结点i无右子结点;否则,其右子结点是结点2i+1。

根据完全二叉树的这个性质,如果按从上到下、从左到右顺序存储完全二叉树的各结点,则很容易确定每一个结点的父结点、左子结点和右子结点的位置。第12章_数据结构与算法ppt课件(全)考点8树与二叉树及其基本性质3.二叉树的存储结构在计算机中,二叉树通常采用链式存储结构。与线性链表类似,用于存储二叉树中各元素的存储结点也由两部分组成:数据域和指针域。但在二叉树中,由于每一个元素可以有两个后件(即两个子结点),因此,用于存储二叉树的存储结点的指针域有两个:一个用于指向该结点的左子结点的存储地址,称为左指针域;另一个用于指向该结点的右子结点的存储地址,称为右指针域。第12章_数据结构与算法ppt课件(全)考点8树与二叉树及其基本性质3.二叉树的存储结构

下图是二叉树存储结点的示意图。其中:

L(i)是结点i的左指针域,即L(i)为结点i的左子结点的存储地址;

R(i)是结点i的右指针域,即R(i)为结点i的右子结点的存储地址;

V(i)是数据域。第12章_数据结构与算法ppt课件(全)考点8树与二叉树及其基本性质3.二叉树的存储结构二叉树的链式存储结构也称为二叉链表。下图表示二叉链表的存储示意图。对于满二叉树与完全二叉树来说,可按层序进行顺序存储。这样,不仅节省存储空间,又方便确定每个结点的父结点与左右子结点的位置,但顺序存储结构对于一般的二叉树不适用。第12章_数据结构与算法ppt课件(全)考点8树与二叉树及其基本性质4.二叉树的遍历

二叉树的遍历是指不重复地访问二叉树中的所有结点。在遍历二叉树的过程中,通常规定:

先遍历左子树,然后再遍历右子树。在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、中序遍历、后序遍历。用D、L、R分别表示“访问根结点”、“遍历根结点的左子树”和“遍历根结点的右子树”。第12章_数据结构与算法ppt课件(全)考点8树与二叉树及其基本性质4.二叉树的遍历(1)前序遍历(DLR):若二叉树为空,则结束返回。否则:首先访问根结点,然后遍历左子树,最后遍历右子树;并且,在遍历左右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。

对左图中的二叉树进行前序遍历,则遍历的结果为:ABDGCEHIF第12章_数据结构与算法ppt课件(全)考点8树与二叉树及其基本性质4.二叉树的遍历(2)中序遍历(LDR):若二叉树为空,则结束返回。否则:首先遍历左子树,然后访问根结点,最后遍历右子树;并且,在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。

对左图中的二叉树进行中序遍历,则遍历的结果为:DGBAHEICF第12章_数据结构与算法ppt课件(全)考点8树与二叉树及其基本性质4.二叉树的遍历(3)后序遍历(LRD):若二叉树为空,则结束返回。否则:首先遍历左子树,然后遍历右子树,最后访问根结点,并且,在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。

对左图中的二叉树进行后序遍历,则遍历的结果为:GDBHIEFCA第12章_数据结构与算法ppt课件(全)考点9顺序查找1.顺序查找

顺序查找又称为顺序搜索,基本方法是:从线性表的第一个元素开始,依次与被查找元素进行比较,若相等则查找成功;若所有的元素都与被查元素进行了比较,都不相等,则查找失败。在下列两种情况下也只能采用顺序查找:(1)如果线性表为无序表,则不管是顺序存储结构还是链式存储结构,只能用顺序查找。(2)即使是有序线性表,如果采用链式存储结构,也只能用顺序查找。顺序查找一个n个元素的线性表,平均复杂度为O(n)。12.7查找技术第12章_数据结构与算法ppt课件(全)考点10二分法查找2.二分法查找

二分法只适用于顺序存储的,按非递减排列的有序表,其方法如下:设有序线性表的长度为n,被查找的元素为i,(1)将i与线性表的中间项进行比较;(2)若i与中间项的值相等,则查找成功;(3)若i小于中间项,则在线性表的前半部分以相同的方法查找;(4)若i大于中间项,则在线性表的后半部分以相同的方法查找。二分查找的复杂度为O(log2n)。12.7查找技术第12章_数据结构与算法ppt课件(全)考点11交换类排序法

排序是指将一个无序序列整理成按值非递减顺序排列的有序序列,即是将无序的记录序列调整为有序记录序列的一种操作。

温馨提示

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

评论

0/150

提交评论