一、算法的基本概念 二、数据结构 三、栈和队列 四、排序方法 五、二叉树

Slides:



Advertisements
Similar presentations
数据结构的引入. 通讯录管理 社团机构管理 校园导航管理 通讯录管理 社团机构管理 校园导航管理.
Advertisements

二级基础知识 第一章 数据结构与算法 全国计算机等级考试. 1.1 算法  一、算法的概念 解决问题准确而完整的描述。  特征:可行性、确定性、有穷性、拥有足够的 情报。  要素:对数据运算操作(算术、逻辑)通过指 令序列程序来实现、算法的控制结构(执行顺 序)。  算法设计方法: 列举法:列举所有可能.
二叉树在树结构的应用中起着非常重要的作用,因为对二叉树的许多操作算法简单,而任何树都可以与二叉树 相互转换,这样就解决了树的
问题的提出: 例1 把十进制整数转换为二至十六之间的任一进制数输出。
Visual FoxPro 程序设计 主讲教师:朱扬清 所在单位:电子与信息工程学院 Mobile Phone:
数据结构学习考 复习课(2) 主要内容: 第三部分:树、二叉树、森林.
第6章 树和二叉树 树型结构是一类非常重要的非线性结构。直观地,树型结构是以分支关系定义的层次结构。
助教:李伟力 电子科学与技术系 数据结构第二次习题课 助教:李伟力 电子科学与技术系
实用数据结构基础 第6章 树.
第6章 树 数据结构(C++描述).
机械CAD中常用的数据结构.
第 4 章 数据结构 1.1 基本数据结构与算法 1.2 线性表 1.3 栈和队列 1.4 树和二叉树 1.5 查找 1.6 内部排序 65
第六章 二叉树和树 6.1 二叉树 6.2 二叉树的基本操作与存储实现 6.3 二叉树的遍历 6.4 线索二叉树 6.5 树和森林
第六章 树和森林 1、树、森林的概念 2、二叉树及其表示 3、遍历二叉树和线索二叉树 4、堆 5、树和森林 6、二叉树的计数 7、霍夫曼树
树.
树(三) 2012初赛知识点梳理.
第3章 栈和队列.
第三章 栈和队列 Stack and Queue
第六章 树和二叉树.
赵海燕 软件研究所 14 Apr 第5章 树与二叉树 之三 赵海燕 软件研究所 14 Apr
数据结构.
树和二叉树(三).
强连通分量 无向图 1、任意两顶点连通称该图为连通图 2、否则将其中的极大连通子图称为连通分量 A D C B E 有向图
二叉树 二叉树 遍历 递归.
第六章 树与二叉树 6.1 树的定义和基本术语 6.2 二叉树 6.3 遍历二叉树和线索二叉树 6.4 树和森林
第2讲 绪论(二).
湖北大学知行学院 教师:涂晓帆 Sunday, December 09, 2018
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第六章 树和二叉树.
第8章 树和二叉树 树 二叉树 二叉树设计 二叉树遍历 线索二叉树 哈夫曼树 等价问题 树与二叉树的转换 树的遍历 主要知识点.
陈海明 副教授 信息学院 计算机系 电子信息类非计算机专业选修课 程序设计实践 陈海明 副教授 信息学院 计算机系
教 师:曾晓东 电 话: E_mail: 计算机软件技术基础 教 师:曾晓东 电 话: E_mail:
第3章 栈和队列 3.1 栈 本章主题:栈和队列的应用 教学目的:掌握栈和队列的应用方法,理解栈的重要作用
第5章 树和二叉树 5.1树 5.2二叉树 5.3二叉树的遍历 5.4线索二叉树 5.5树、森林与二叉树的转换 5.6哈夫曼树.
第11讲 树和二叉树(二).
第六章 树 2019/1/14.
第五章 树 5.1 树的定义 树是一类重要的非线性数据结构,是以分支关系定义的层次结构 定义
数据结构概论 第6章 树和二叉树 董黎刚 浙江工商大学信电学院.
Tree & Binary Tree.
第一二节 树及二叉树.
顺序表的插入.
第四章 栈和队列 4.1栈 4.2栈的应用 4.3队列 4.3队列应用.
计算机软件技术基础 数据结构与算法(3).
无向树和根树.
第三章 栈和队列 第二部分 队列(Queue) 2019/4/8.
数列.
C语言程序设计 主讲教师:陆幼利.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
Algorithm Design and Analysis
顺序表的删除.
( data structures, Algorithms and Applications in C++)
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
用计算器开方.
第 四 讲 线性表(二).
第六章 树和二叉树.
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
第5节 树 前两章学习的栈和队列属于线性结构。在这种结构中,数据元素的逻辑位置之间呈线性关系,每一个数据元素通常只有一个前件(除第一个元素外)和一个后件(除最后一个元素外)。在实际生活中,可以用线性结构描述数据元素之间逻辑关系的问题是很广泛的,但也有很多问题不能依靠线性结构来解决,例如家谱、行政组织机构等都是非线性的数据结构。其中树就是一种非线性的数据结构。
第八章 总线技术 8.1 概述 8.2 局部总线 8.3 系统总线 8.4 通信总线.
1.设A和B是集合,证明:A=B当且仅当A∩B=A∪B
本章的基本内容是: ⑴栈和队列的定义及操作特性; 第3章 特殊线性表—栈、队列和串 ⑵栈和队列的两种存储方法和基本运算的实现;
第一章 绪论 1.1 引言 1.2 逻辑结构和存储结构 1.3 算法.
《离散结构》 二元运算性质的判断 西安工程大学计算机科学学院 王爱丽.
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
第七讲 栈和队列(二) 1/.
第六章 Excel的应用 五、EXCEL的数据库功能 1、Excel的数据库及其结构 2、Excel下的数据排序 (1)Excel的字段名行
基于列存储的RDF数据管理 朱敏
插入排序的正确性证明 以及各种改进方法.
本节内容 1. 平衡二叉树的定义 2.平衡化旋转 3.平衡二叉排序树的插入操作 昆山爱达人信息技术有限公司
最小生成树 最优二叉树.
第五章 树和二叉树.
Presentation transcript:

一、算法的基本概念 二、数据结构 三、栈和队列 四、排序方法 五、二叉树 基本数据结构与算法 一、算法的基本概念 二、数据结构 三、栈和队列 四、排序方法 五、二叉树

一、算法的基本概念 算法是解决某个特定问题的一种方法或一个过程。 2.算法具有以下五个特性: 1.算法的基本定义: (1)有穷性 一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。 (2)确定性 算法中每一条指令必须有确切的含义。不存在二义性。且算法只有一个入口和一个出口。 (3)可行性 一个算法是可行的。即算法描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。 (4)输入 一个算法有零个或多个输入,这些输入取自于某个特定的对象集合。 (5)输出 一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量。

1.时间复杂度与空间复杂度是不相关的。 2.算法的效率与问题的规模和数据存贮结构有关 3.一个算法的评价主要从时间复杂度和空间复杂度来考虑 (1)时间复杂度:执行算法所需要的计算工作 量,用基本运算的执行次数来度量。 (2)空间复杂度:执行算法的内存空间。 注意 注意 1.时间复杂度与空间复杂度是不相关的。 2.算法的效率与问题的规模和数据存贮结构有关 1.时间复杂度与空间复杂度是不相关的。 2.算法的效率与问题的规模和数据存贮结构有关

二、数据结构 数据结构:就是相互之间存在一种或多种特定关系的数据元素的集合。 数据结构主要指逻辑结构和物理结构(存储结构) 线性表 栈 数据的逻辑结构 数据的存储结构 线性结构 非线性结构 顺序存储 链式存储 线性表 栈 队 树形结构 图形结构

1.数据之间的相互关系称为逻辑结构。 通常分为四类基本结构: (1)集合 结构中的数据元素除了同属于一种类型外,别无其它关系。 (2)线性结构 结构中的数据元素之间存在一对一的关系。 (3)树型结构 结构中的数据元素之间存在一对多的关系。 (4)图状结构或网状结构 结构中的数据元素之间存在多对多的关系

注意 2.数据结构在计算机中的表示称为数据的物理结构,又称为存储结构 通常分为两类基本结构: (1)顺序存储结构:用数据元素在存储器中的相对位置来表示数据元素之间的逻辑关系。 (2)链式存储结构:在每一个数据元素中增加一个存放地址的指针,用此指针来表示数据元素之间的逻辑关系。 注意 逻辑结构和物理结构是描述数据结构的密不可分的两个方面。任何一个算法的设计取决于选定的逻辑结构,而算法的实现取决于依赖的存储结构

三、栈和队列 1.栈的定义和特点 栈和队列是两种特殊的线性表,是操作受限的线性表,仅在表的一端进行插入或删除操作。 定义:限定仅在表尾进行插入或删除操作的线性表,表尾—栈顶,表头—栈底,不含元素的栈称空栈 入栈(压栈):栈的插入操作 出栈(弹栈):删除操作 特点:先进后出(FILO)或后进先出(LIFO)

栈的示意图: 入栈 入栈 入栈 入栈 入栈 入栈 入栈 出栈 栈顶 图3.1栈的示意图 图3.1栈的示意图 图3.1栈的示意图 an an an an an an an an 栈s=(a1,a2,……,an) 栈s=(a1,a2,……,an) 栈s=(a1,a2,……,an) 栈s=(a1,a2,……,an) … 入栈顺序: a1,a2,……,an 入栈顺序: a1,a2,……,an 入栈顺序: a1,a2,……,an a2 a2 a2 a2 a2 a2 a2 a2 a2 出栈顺序: an,an-1,……,a1 栈底 栈底 栈底 栈底 栈底 栈底 a1

题1:假设数据1,2,3顺序入栈,入栈时可以随时出栈,问出栈序列有几种? 题2:设一个栈的输入序列为1、2、3、4,则借助栈所得到的输出序列不可能是( )。 A. 1、2、3、4 B. 4、3、2、1 C. 1、3、4、2 D. 4、1、2、3 总结: 1 栈是限定仅能在表尾一端进行插入、 删除操作的线性表; 2 栈的元素具有后进先出的特点;

特点: 2.队列的定义和特点 定义:队列特殊性在于限定插入在线性表的一端进行,删除在线性表的另外一端进行。 出队 front rear 通常我们将插入端称为队尾,用一个“队尾指针”指 示;而删除端被称为队头,用一个“队头指针”指示。 先进先出(First In First Out),简称为 FIFO线性表。 特点:

队列总结: 1.队列是限定仅能在表尾一端进行插入,表头一端删除操作的线性表; 2.队列中的元素具有先进先出的特点 3.循环队列 题:某循环队列的容量为50 ,头指针Front=5(指向队头元素的前一位置),尾指针rear=29(指向队尾元素),该循环队列共有_____元素

四、各种排序方法的综合比较 稳定 排序方法 平均时间 最坏情况 最好情况 辅助空间 稳定性 直接插入 折半插入 希尔排序 不稳定 冒泡排序 快速排序 简单选择 堆排序 归并排序 基数排序 O(n) O(n ) / O(nlog2n) O(n2 ) O(nlog2n ) O(d(n+rd) ) O(n2 ) O(n4/3 ) O(nlog2n) O(nlog2n ) O(d(n+rd) ) O(n2 ) O(nlog2n ) O(d(n+rd) ) / O(1) O(log2n) O(n) O(n+rd)

五、二叉树 二叉树是一类重要的非线性数据结构,是以分支关系定义的层次结构。 1.基本概念: 结点的度:树中每个结点具有的子树数或者后继结点数称为该结点的度(Degree)。度数为0的结点,即没有子树的结点叫终端结点或叶子结点。一棵树中各个结点度数的最大值叫做这个树的度。 结点的层次(level)——从根结点算起,根为第一层,它的孩子为第二层……

树的深度:树是一种层次结构,树中结点的层次(Level)是从根结点算起的。根结点为第一层,其儿子结点为第二层。其余各结点的层数逐层由上而下计算。一棵树中结点的最大层数叫做此树的深度或高度。 2.二叉树的定义及性质: 定义:一个二叉树是n个结点的有限集(n≥0),此集合或者是空集(n=0),或者是由一个根结点及两棵互不相交的、分别称为左子树和右子树的二叉树组成。 由上述定义可知,二叉树可以是空集,其根可以有空的左子树或右子树,或者左、右子树皆为空。 一般地,二叉树有五种基本形态

○ 性质2:深度为k的二叉树至多有____个结点(k1) (a) A (b ) (c (d C (e 二叉树的性质与结论: 性质1:在二叉树的第i层(i  1)上至多有____个结点 性质2:深度为k的二叉树至多有____个结点(k1)

性质3:任意一棵二叉树T,如果其叶结点数为n0,度为2的结点数为n2,则_________ 两种特殊的二叉树: 1.满二叉树:如果一个二叉树中,除最下一层的各结点度数为0以外,其它各层结点的度数均等于2,则此二叉树为满二叉树。 2.完全二叉树:如果一个二叉树各层都是“满”的,只是最下面一层从右边起连续缺n个结点,这种二叉树叫做完全二叉树。 n0=n2+1

题1.某二叉树中有N个度为2的结点,则二叉树的叶子结点是多少? 题2.一棵二叉树中共有70个叶子结点,80个度为1的结点,则该二叉树的总结点数?

二叉树的遍历 二叉树的遍历(Traversal)是指按一定的规律访问二叉树的每个结点,且每个结点只被访问一次的过程。 对二叉树的遍历过程实际上是将非线性结构的二叉树中的结点排列成一个线性序列的过程。

一个非空的二叉树由根结点及左、右子树这三个基本部分组成,因此若能依次遍历这三部分,便是遍历了整个二叉树。 在任一给定结点上,可以按某种次序执行三个操作:访问结点本身,遍历该结点左子树,遍历该结点右子树,操作排列次序: ① 左、根、右;③ 根、左、右;⑤ 左右根; ② 右、根、左;④ 根、右、左;⑥ 右、左、根; 由于实际问题一般都是要求左子树较右子树先遍历,故只采用其中①、③、⑤三种遍历次序,分别称为中序遍历、先序遍历和后序遍历。

先序遍历:先访问根结点,然后分别先序遍历左子树、右子树 中序遍历:先中序遍历左子树,然后访问根结点,最后中序遍历右子树 后序遍历:先后序遍历左右子树,然后访问根结点 按层次遍历:从上到下从,左到右访问各节点。

题1. 中序遍历序列:H,D,I,B,E,A,F,C,G。 先序遍历序列:A,B,D,H,I,E,C,F,G。 后序遍历序列:H,I,D,E,B,F,G,C,A。 题2.已知一棵二叉树 先序序列KAFGIBEDHJC和中序序列AGFKEDBHJIC 写出后序序列 题3.已知一颗二叉树 后序序列FBCGIEJDAH和中序序列BFGCHIEADJ 写出先序序列。

题2.后序遍历:GFADEJHBCIK 题3.前序遍历:HGBFCAEIDJ K A I B C D E F G H J A B C D E