《数据结构》考研必须掌握的知识点与算法

合集下载

山东省考研数据结构与算法复习资料常见数据结构与算法详解

山东省考研数据结构与算法复习资料常见数据结构与算法详解

山东省考研数据结构与算法复习资料常见数据结构与算法详解数据结构与算法是计算机科学与技术领域中非常重要的基础知识,无论是在学术研究还是在实际工作中,都离不开这两个领域。

而对于山东省考研的学生来说,深入理解数据结构与算法,掌握常见的数据结构与算法,是高分通过考试的关键。

本文将详细介绍一些常见的数据结构与算法,希望对山东省考研的学生们有所帮助。

一、线性结构线性结构是一种最简单、最常见的数据结构,它的一大特点是数据元素之间存在一对一的线性关系。

常见的线性结构包括线性表、栈、队列等。

1. 线性表线性表是最基本、最简单的一种线性结构,它包括顺序表和链表两种类型。

顺序表是将线性结构的数据元素按照逻辑顺序依次存储在计算机的存储空间中,通过物理地址上的连续存储来实现。

链表是将线性结构的数据元素按照逻辑顺序通过指针连接在一起的数据结构。

2. 栈栈是一种具有后进先出(Last In First Out,LIFO)特点的线性结构。

栈可以通过数组或链表实现。

栈的操作包括进栈(push)和出栈(pop)。

3. 队列队列是一种具有先进先出(First In First Out,FIFO)特点的线性结构。

队列可以通过数组或链表实现。

队列的操作包括入队(enqueue)和出队(dequeue)。

二、非线性结构非线性结构是指数据元素之间不是简单的前后关系,而是复杂的多对多关系。

常见的非线性结构包括树和图。

1. 树树是一种具有层次关系的非线性结构。

树由若干个结点组成,结点之间通过边连接,最顶层的结点称为根结点,最底层的结点称为叶子结点。

树的操作包括插入、删除、查找等。

2. 图图是一种由结点和边组成的非线性结构,结点之间的关系可以是任意的。

图可以分为有向图和无向图,根据结点之间的连通性可分为连通图和非连通图。

图的操作包括插入、删除、遍历、最短路径等。

三、常见算法1. 排序算法排序算法是对一组数据进行按照特定顺序排列的算法。

常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。

数据结构考研笔记整理(全)

数据结构考研笔记整理(全)

数据结构考研笔记整理(全)数据结构考研笔记整理数据结构是计算机科学中非常重要的一门课程,对于计算机专业的学生来说,考研复习过程中对数据结构的准备非常关键。

因此,我们需要系统地整理数据结构的相关知识点,以便更好地理解和掌握。

一、线性表线性表是数据结构中最基本的一种数据结构,它是一种有序的数据元素的集合。

常见的线性表有顺序表和链表。

1. 顺序表顺序表是将数据元素存放在一块连续的存储空间中,通过元素的下标来访问。

具有随机访问的特点,但插入和删除操作比较麻烦。

适用于查找操作频繁的场景。

2. 链表链表是将数据元素存放在任意的存储空间中,通过指针来连接各个元素。

具有插入和删除操作方便的特点,但不支持随机访问。

适用于插入和删除操作频繁的场景。

二、栈和队列栈和队列是特殊的线性表,它们都具有先进先出的特点。

1. 栈栈是一种特殊的线性表,只能在表的一端进行插入和删除操作,即“先进后出”。

常见的应用有函数调用的过程中的参数传递、表达式求值等。

2. 队列队列也是一种特殊的线性表,只能在表的一端进行插入操作,而在另一端进行删除操作,即“先进先出”。

常见的应用有任务调度、缓冲区管理等。

三、树树是一种非常重要的非线性数据结构,它由节点和边组成。

树具有层次结构,常见的树结构有二叉树、二叉搜索树和平衡二叉树等。

1. 二叉树二叉树是每个节点最多有两个子树的树结构,包括左子树和右子树。

二叉树的遍历方式有前序遍历、中序遍历和后序遍历。

2. 二叉搜索树二叉搜索树是一种特殊的二叉树,它的左子树中的所有节点都小于根节点,右子树中的所有节点都大于根节点。

具有快速查找和插入的特点。

3. 平衡二叉树平衡二叉树是一种特殊的二叉搜索树,它的左右子树的高度差不超过1。

通过旋转操作可以保持树的平衡性。

四、图图是一种非常复杂的非线性数据结构,它由顶点和边组成。

图可以分为有向图和无向图,常见的图算法有深度优先搜索和广度优先搜索。

1. 深度优先搜索深度优先搜索是一种用于遍历或搜索图和树的算法,它从一个节点开始,尽可能深地访问每个节点的所有子节点,直到没有子节点为止。

数据结构考研复习重点归纳

数据结构考研复习重点归纳

数据结构考研复习重点归纳数据结构是计算机科学中非常重要的一门基础课程,考研复习数据结构时,需要重点掌握的内容有以下几个方面。

1.线性表:线性表是数据结构中最基本的一种结构,常见的线性表有数组、链表和栈等。

考生需要掌握线性表的定义、插入、删除、查找等基本操作,并能够分析它们的时间复杂度。

2.树:树是一种非常重要且常见的数据结构,它具有分层结构和层次关系。

其中,二叉树是最简单也是最基本的一种树结构,树的遍历(如前序遍历、中序遍历和后序遍历)是树算法中的重要内容。

此外,还要了解一些特殊的树结构,如平衡树和B树等。

3.图:图是由节点和边组成的一种数据结构,它是一种非常灵活的结构,常用来表示各种实际问题中的关系。

在考研复习中,需要掌握图的基本概念(如顶点和边)、图的存储结构(如邻接矩阵和邻接表)以及图的遍历算法(如深度优先和广度优先)等。

4.查找和排序:在实际问题中,经常需要查找和排序数据。

查找算法(如顺序查找、二分查找和哈希查找)和排序算法(如冒泡排序、插入排序和快速排序)是数据结构中常见的算法,考生需要熟练掌握这些算法的原理和实现方法。

此外,还要了解一些高级的查找和排序算法,如二叉查找树和归并排序等。

5.散列表:散列表(也称哈希表)是一种特殊的数据结构,它利用散列函数将数据映射到一个固定大小的数组中。

散列表具有快速的查找和插入操作,常用于实现字典和数据库等应用。

在考研复习中,需要了解散列表的原理和实现方法,以及处理冲突的方法,如链地址法和开放地址法。

6.动态规划:动态规划是一种解决问题的数学方法,也是一种重要的算法思想。

在考研复习中,需要掌握动态规划的基本原理和解题思路,以及常见的动态规划算法,如背包问题和最长公共子序列等。

7.算法复杂度分析:在考研复习中,需要有一定的算法分析能力,能够对算法的时间复杂度和空间复杂度进行分析和估算。

此外,还要能够比较不同算法的效率,并选择合适的算法来解决实际问题。

除了以上重点内容,考生还要注意掌握一些基本的编程知识,如指针、递归和动态内存分配等。

湖北省考研计算机复习资料数据结构与算法重点知识点解析

湖北省考研计算机复习资料数据结构与算法重点知识点解析

湖北省考研计算机复习资料数据结构与算法重点知识点解析数据结构与算法是计算机科学与技术领域中非常重要的基础知识,对于考研计算机专业的学生来说尤为关键。

本文将对湖北省考研计算机复习资料中数据结构与算法的重点知识点进行解析,帮助考生更好地理解和掌握相关内容。

一、线性表1. 数组数组是一种最简单的数据结构,它由相同类型的元素组成,并按一定的顺序排列。

在计算机科学中,数组是一种连续存储结构,可以通过下标来访问其中的元素。

在算法设计中,数组的访问时间复杂度为O(1),是非常高效的数据结构之一。

2. 链表链表是一种线性表的存储结构,它由节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。

链表的特点是插入和删除操作非常高效,时间复杂度为O(1),但是访问操作的时间复杂度较高,为O(n)。

3. 栈和队列栈和队列是常用的数据结构,它们都属于线性表的特殊形式。

栈是一种后进先出(LIFO)的数据结构,只允许在表尾进行插入和删除操作。

栈可以用数组或链表来实现,常见的操作包括入栈(push)和出栈(pop)。

队列是一种先进先出(FIFO)的数据结构,允许在表的一端进行插入操作,另一端进行删除操作。

队列可以用数组或链表来实现,常见的操作包括入队(enqueue)和出队(dequeue)。

二、树与二叉树1. 树的基本概念树是一种非线性的数据结构,由节点和边组成。

树的每个节点可以有零个或多个子节点,其中有且仅有一个节点称为根节点。

树常用于表示层次结构,例如文件系统和组织结构等。

2. 二叉树二叉树是一种特殊的树结构,每个节点最多有两个子节点,分别称为左子树和右子树。

二叉树常用于解决递归问题,例如二叉查找树和平衡二叉树等。

3. 堆和二叉堆堆是一种特殊的二叉树结构,它满足堆特性:对于任意节点i,其父节点的值小于等于子节点的值。

堆常常用于实现优先队列和排序算法。

二叉堆是一种完全二叉树结构,可以用数组来表示。

在二叉堆中,每个节点的值都大于等于其子节点的值,称为最大堆;或者每个节点的值都小于等于其子节点的值,称为最小堆。

四川省考研计算机科学复习资料数据结构与算法重点知识点整理

四川省考研计算机科学复习资料数据结构与算法重点知识点整理

四川省考研计算机科学复习资料数据结构与算法重点知识点整理数据结构与算法是计算机科学考研的重点内容之一,对于考生来说,掌握好数据结构与算法的核心知识点是提高考试成绩的关键。

本文整理了四川省考研计算机科学复习资料中的数据结构与算法重点知识点,旨在帮助考生全面复习,并取得更好的考试结果。

一、基本概念1. 数据结构的定义与分类- 数据结构的概念及作用- 线性结构、树形结构、图形结构的特点和应用场景2. 算法的定义与特性- 算法的概念及作用- 算法的特性:有穷性、确定性、可行性、输入、输出- 算法的度量标准:时间复杂度、空间复杂度二、线性表1. 顺序存储结构与链式存储结构- 顺序存储结构的定义、存储方式和特点- 链式存储结构的定义、存储方式和特点2. 线性表的基本操作- 创建线性表- 插入元素- 删除元素- 查找元素- 清空线性表- 线性表的长度三、树与二叉树1. 树的基本概念- 树的定义与特点- 树的节点、根节点、叶子节点、子节点的概念2. 二叉树的基本概念- 二叉树的定义与特点- 二叉树的遍历方式:前序遍历、中序遍历、后序遍历 - 二叉树的存储方式:顺序存储、链式存储3. 常见的二叉树及其特点- 满二叉树、完全二叉树、平衡二叉树的定义与区别- 二叉搜索树的概念及应用四、图1. 图的基本概念- 图的定义与特点- 有向图、无向图、有权图、无权图的概念及应用场景2. 图的存储方式- 邻接矩阵的定义和特点- 邻接表的定义和特点3. 图的遍历方式- 深度优先搜索(DFS)- 广度优先搜索(BFS)五、排序与查找算法1. 常见的排序算法- 冒泡排序- 插入排序- 选择排序- 快速排序- 归并排序- 堆排序2. 常见的查找算法- 顺序查找- 折半查找- 哈希查找总结:本文对四川省考研计算机科学复习资料中的数据结构与算法重点知识点进行了整理,并按照题目要求排版整洁、美观。

通过学习本文所整理的知识点,考生们可以更好地掌握数据结构与算法的核心内容,为考试做好充分准备。

819数据结构考研大纲2024

819数据结构考研大纲2024

819数据结构考研大纲2024数据结构是计算机科学与技术专业中一门重要的基础课程,它主要研究计算机中数据的组织、存储和管理方式,以及基本的数据操作和算法。

数据结构考研大纲旨在培养学生对数据结构的理解和应用能力,为其以后的研究和工作提供必要的基础。

根据2024年的数据结构考研大纲,该课程主要包括以下几个方面的内容:1.线性表:线性表是最基本的一种数据结构,它包括顺序表和链表两种形式。

顺序表是通过一段连续的存储空间来存储数据,链表使用指针将不连续的存储单元连接起来。

学生需要掌握线性表的存储结构、基本操作和常见应用。

2.栈和队列:栈是一种先进后出的数据结构,队列是一种先进先出的数据结构。

学生需要学习栈和队列的基本操作,以及它们在计算机系统中的应用,如操作系统的进程调度和内存管理。

3.树和二叉树:树是一种非线性的数据结构,它由节点和边组成,节点之间存在一对多的关系。

二叉树是一种特殊的树,每个节点最多有两个子节点。

学生需要学习树和二叉树的表示方法、遍历算法和常用的应用,如哈夫曼树和二叉查找树。

4.图:图是一种用于表示多对多关系的数据结构,它由节点和边组成。

学生需要学习图的存储结构、遍历算法和最短路径算法,如Dijkstra算法和Floyd-Warshall算法。

5.排序和查找算法:排序算法是将一组数据按照某种规则进行排序的算法,常见的排序算法有插入排序、冒泡排序和快速排序等。

查找算法是在给定数据集合中找到特定元素的算法,学生需要学习常见的查找算法,如顺序查找和二分查找。

6.文件存储结构:文件存储结构是将数据存储到硬盘上的一种方式,学生需要学习文件的组织方式,如顺序文件和索引文件,并了解文件的读写操作和常见的文件操作算法。

以上是2024年数据结构考研大纲的主要内容,通过学习这些知识,学生将能够掌握数据结构的基本理论和应用技巧,为以后的学习和工作打下坚实的基础。

数据结构是计算机科学与技术专业中一门重要的基础课程,对于学生的专业发展和职业发展具有重要意义。

考研数据结构常见知识点总结与复习方法

考研数据结构常见知识点总结与复习方法

考研数据结构常见知识点总结与复习方法数据结构是计算机科学中的重要基础课程,也是考研的必考科目之一。

掌握好数据结构的知识点,不仅对于考研复习有帮助,也对于日后从事相关领域的工作有着重要意义。

本文将对考研数据结构常见的知识点进行总结,并分享一些复习方法,希望对考研学子有所帮助。

一、数据结构的基本概念数据结构是指数据元素及其之间的关系的集合,它是计算机存储、组织数据的方式。

在考研中,常见的数据结构包括线性表、树、图等。

线性表包括顺序表和链表,顺序表是一种连续存储的线性表,链表是一种离散存储的线性表。

树分为二叉树、平衡二叉树、树的遍历等。

图是由顶点集合和边集合组成的一种数据结构。

二、常见的数据结构算法1. 线性表的算法:包括插入、删除、查找等操作,如顺序表的插入和删除、链表的插入和删除。

2. 树的算法:如创建一个二叉树、二叉树的遍历(前序、中序、后序)等。

3. 图的算法:图的遍历、最短路径算法、最小生成树算法等。

三、复习方法1. 理清知识框架:首先要理清数据结构的知识框架,明确各个部分的概念和关系。

可以通过查阅教材、课堂笔记等资料,梳理出一个清晰的知识结构框架。

2. 看懂教材:仔细阅读教材,将重点、难点的内容标注出来,并理解其原理和实现方式。

可以做一些笔记、总结,帮助记忆和理解。

3. 做题巩固:在复习的过程中,要注重做题巩固。

可以从历年考研真题、习题集等找到一些与知识点相关的题目,多做一些练习,把知识点运用到实际中。

做题能够帮助巩固理论知识,提高解题能力。

4. 制定学习计划:根据自己的实际情况,合理安排学习时间和任务,制定一个科学合理的学习计划。

划分好每天、每周的学习内容,按部就班地进行学习,保持持续性和系统性。

四、总结与展望数据结构是考研中的一门重要课程,对于计算机专业的学生来说尤为重要。

通过对数据结构常见知识点的总结和复习方法的分享,希望能够帮助考研学子更好地掌握数据结构这门课程。

在备考过程中,持之以恒,通过理论学习和实践练习相结合,相信大家一定能够取得优异的成绩,实现自己的考研梦想。

数据结构与算法知识点必备

数据结构与算法知识点必备

数据结构与算法知识点必备一、数据结构数据结构是指数据元素之间的关系和组织方式。

掌握好数据结构对于编程和算法的理解至关重要。

以下是数据结构的一些必备知识点:1. 数组(Array):数组是一种线性数据结构,它由相同类型的元素组成,通过索引可以访问和操作元素。

了解数组的创建、访问和操作方法是基础中的基础。

2. 链表(Linked List):链表也是一种线性数据结构,它由节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。

了解链表的插入、删除和遍历操作以及链表的类型(单链表、双链表、循环链表)是必备的。

3. 栈(Stack):栈是一种先进后出(LIFO)的数据结构,只允许在栈顶进行插入和删除操作。

了解栈的基本操作(入栈、出栈)以及栈的应用场景(如函数调用、表达式求值)是必要的。

4. 队列(Queue):队列是一种先进先出(FIFO)的数据结构,只允许在队尾插入元素,在队头删除元素。

了解队列的基本操作(入队、出队)以及队列的应用场景(如任务调度、消息传递)是必须的。

5. 树(Tree):树是一种非线性数据结构,它由节点和边组成。

了解树的基本概念(如根节点、叶子节点、父节点、子节点)以及树的遍历方式(前序、中序、后序)是必备的。

6. 图(Graph):图是一种包含节点和边的数据结构,节点之间的关系可以是任意的。

了解图的表示方法(邻接矩阵、邻接表)以及图的遍历算法(深度优先搜索、广度优先搜索)是必要的。

二、算法算法是解决问题的步骤和方法。

掌握好算法可以提高代码的效率和质量。

以下是算法的一些必备知识点:1. 排序算法:了解常见的排序算法(如冒泡排序、插入排序、选择排序、快速排序、归并排序)的原理、时间复杂度和空间复杂度是必备的。

2. 查找算法:了解常见的查找算法(如线性查找、二分查找、哈希查找)的原理、时间复杂度和适用场景是必要的。

3. 递归算法:了解递归算法的原理和应用场景,掌握递归算法的设计和实现方法是必备的。

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

《数据结构》必须掌握的知识点与算法第一章绪论1、算法的五个重要特性(有穷性、确定性、可行性、输入、输出)2、算法设计的要求(正确性、可读性、健壮性、效率与低存储量需求)3、算法与程序的关系:(1)一个程序不一定满足有穷性。

例操作系统,只要整个系统不遭破坏,它将永远不会停止,即使没有作业需要处理,它仍处于动态等待中。

因此,操作系统不是一个算法。

(2)程序中的指令必须是机器可执行的,而算法中的指令则无此限制。

算法代表了对问题的解,而程序则是算法在计算机上的特定的实现。

(3)一个算法若用程序设计语言来描述,则它就是一个程序。

4、算法的时间复杂度的表示与计算(这个比较复杂,具体看算法本身,一般关心其循环的次数与N的关系、函数递归的计算)第二章线性表1、线性表的特点:(1)存在唯一的第一个元素;(这一点决定了图不是线性表)(2)存在唯一的最后一个元素;(3)除第一个元素外,其它均只有一个前驱(这一点决定了树不是线性表)(4)除最后一个元素外,其它均只有一个后继。

2、线性表有两种表示:顺序表示(数组)、链式表示(链表),栈、队列都是线性表,他们都可以用数组、链表来实现。

3、顺序表示的线性表(数组)地址计算方法:(1)一维数组,设DataType a[N]的首地址为A0,每一个数据(DataType类型)占m个字节,则a[k]的地址为:A a[k]=A0+m*k(其直接意义就是求在数据a[k]的前面有多少个元素,每个元素占m个字节)(2)多维数组,以三维数组为例,设DataType a[M][N][P]的首地址为A000,每一个数据(DataType 类型)占m个字节,则在元素a[i][j][k]的前面共有元素个数为:M*N*i+N*j+k,其其地址为:A a[i][j][k]=A000+m*(M*N*i+N*j+k);4、线性表的归并排序:设两个线性表均已经按非递减顺序排好序,现要将两者合并为一个线性表,并仍然接非递减顺序。

可见算法2.25、掌握线性表的顺序表示法定义代码,各元素的含义;6、顺序线性表的初始化过程,可见算法2.37、顺序线性表的元素的查找。

8、顺序线性表的元素的插入算法,注意其对于当原来的存储空间满了后,追加存储空间(就是每次增加若干个空间,一般为10个)的处理过程,可见算法2.49、顺序线性表的删除元素过程,可见算法2.510、顺序线性表的归并算法,可见算法2.711、链表的定义代码,各元素的含义,并能用图形象地表示出来,以利分析;12、链表中元素的查找13、链表的元素插入,算法与图解,可见算法2.914、链表的元素的删除,算法与图解,可见算法2.1015、链表的创建过程,算法与图解,注意,链表有两种(向表头生长、向表尾生长,分别用在栈、队列中),但他们的区别就是在创建时就产生了,可见算法2.1116、链表的归并算法,可见算法2.1217、建议了解所谓的静态单链表(即用数组的形式来实现链表的操作),可见算法2.1318、循环链表的定义,意义19、循环链表的构造算法(其与单链表的区别是在创建时确定的)、图解20、循环链表的插入、删除算法、图解21、双向链表的定义,意义22、双向链表的构造算法(其与单链表的区别是在创建时确定的)、图解23、双向链表的插入、删除算法、图解,可见算法2.18、2.1924、补充:在循环链表中,只设立一个表尾指针比只设立一个表头指针更方便些,为什么?第三章栈和队列1、栈的顺序表示与实现2、栈的链表表示与实现3、栈的入栈、出栈操作算法4、栈的几个经典应用(迷宫、表达式求值)5、栈与递归的实现,如Hanoi塔问题6、队列链式表示与实现7、链式队列的入队、出队操作算法8、循环队列的表示(顺序表示)和实现,特别注意其判满、判空方法、入队操作、出队操作的实现(特别重要,考得频率很大)9、补充:共享栈的方法与实现(即两个栈共享一个空间,他们采用栈顶相向,迎面增长的存储方式)10、补充:用两个栈来模拟一个队列的思路、算法11、补充:表达式(前缀、后缀、中缀)的表达互换,这个操作要求对栈在表达式求值中的应用相当熟练,并要求对后面的二叉树相当熟练12、补充:了解双端队列(只需了解)13、补充:链栈比顺序栈的优点与缺点14、补充:一系列元素依次入栈再出栈的顺序,经典题目为:有5个元素,其入栈次序为A、B、C、D、E,以下哪种出栈的顺序是不可能的?15、补充:了解用循环链表实现队列,注意在该循环链表中只有一个头指针或一个表尾指针(只需了解)16、补充:根据给出的数学公式,写出对应的递归算法,最经典的就是用递归求阶乘。

第六章树和二叉树1、几个重要的概念:树、森林、子树、根、终端结点(叶子)、非终端结点、双亲、孩子、兄弟、堂兄弟、度、深度、有序树、无序树、二叉树、k叉树、完全二叉树、满二叉树、线索二叉树;2、二叉树的5种基本形态;3、二叉树的5个重要性质:(1)在二叉树的第i 层上至多有2i -1个结点(i≥1);(2)深度为k 的二叉树至多有2k -1个结点,(k ≥1)(3)对任何一棵二叉树T ,如果其终端结点(叶子)数为n 0,度为2的结点数为n 2,则n 0=n 2+1;(4)具有n 个结点的完全二叉树的深度为⎣⎦1log 2+n ;(5)如果对一棵有n 个结点的完全二叉树(其深度为⎣⎦1log 2+n )的结点按性层序编号(从第1层到第⎣⎦1log 2+n 层,每层从左到右),则对任一结点i (1≤i ≤n ),有:(i )如果i =1,则结点i 是二叉树的根,无双亲;如果i >1,则其双亲Parent (i )是结点⎣⎦2i(ii )如果2i >n ,则结点i 无左孩子(结点i 为叶子结点);否则其左孩子LChild (i )是结点2i ;(iii )如果2i +1>n ,则结点i 无右孩子;否则其右孩子RChild (i )是结点2i +1利用完全二叉树的上述性质,能处理大多数完全二叉树的计算题;4、二叉树的存储结构:(1)了解顺序存储结构,只做了解;(2)链式存储结构,重要,需要掌握,后面的算法都是基于此结构;5、二叉树的遍历:(1)能对任意一棵二叉树进行手动前序、中序、后序遍历;(2)能将由前序+中序、后序+中序给出的序列还原成一棵二叉树;(3)能将一个数学表达式用中序方法将其用二叉树画出来,并能写出其前缀(波兰式)、中缀、后缀(逆波兰式)表达出来;6、二叉树的遍历递归算法(注意前、中、后序三个算法只有细微的差别),可见算法6.1,而他们的非递归算法不作要求;7、建立二叉树链表的递归算法,可见算法6.4;8、线索二叉树的存储结构图;9、能用手画出任意二叉树对应的线索二叉树(中序、后序线索);10、线索二叉树的非递归遍历算法,可见算法6.5;11、理解线索二叉树的中序线索化过程算法,可见算法6.6;12、手动写出任意森林、树的深度优先、广度优先遍历顺序;13、森林、二叉树的转换过程,能用手画出即可;14、哈夫曼树的相关概念:路径长度、带权路径长度WPL 、权值;15、二叉哈夫曼树的构造过程,能用手动构造,并能将构造好的树用编码表示出来;16、了解哈夫曼树的构造算法,可见算法6.12,只需要了解,无需掌握;17、记住树的记数公式:对一棵有n 个结点的有n n C n 211 棵不同的二叉树 18、补充:二叉排序树、插入、删除结点的操作(在查找一章中有详述);19、补充:满二叉树、完全二叉树用数组存储方式,其元素、结点对应关系;20、补充:求二叉树的高度(深度)算法;21、补充:将二叉树中左、右孩子交换的算法;22、补充:将用数组存储的完全二叉树转换成链式结构的算法;23、补充:对用数组存储的完全二叉树进行非递归的前序、中序、后序遍历算法;24、补充:求二叉树中叶子数、度为1的、度为2的结点数算法;25、补充:对于K叉树,其结点总数为N,求出该树的最大高度、高小高度;26、补充:构造结点数为n的k叉哈夫曼树(其所有的结点要么度为0,要么度为k),注意一般都需要增加m个权为0的结点(称为虚结点),其中如果叶子结点数目不足以构成正则的k叉树(树中只有度为k或0的结点),即不满足(n-1)MOD(k-1)=0(其中MOD 是取余运算),需要添加权为0的结点,添加的个数为m=k-(n-1)MOD(k-1)-1。

添加的位置应该是距离根结点的最远处。

假设n=10,k=3,则需要添加1个权为0的虚结点(其字母可以为空)。

第七章图1、图的几个重要概念:顶点、弧、弧尾、弧头、边、有向图、无向图、完全图、邻接点、入度、出度、度、路径、回路(环)、连通图、连通分量、强连通图、强连通分量、生成森林、关节点、重连通图、AOV-网、AOE-网;2、图的几种存储、表示方法:数组表示法(重要)、邻接表(最重要,应用最广)、逆邻接表(掌握)、十字链表(理解)、邻接多重表(了解),并能大致掌握他们各种方法表示的优缺点;3、图的两种遍历顺序:深度、广度优先,建议同时掌握其算法;4、图的生成树和生成森林(只需掌握手画方法);5、图的最小生成树的两种算法:普里姆(Prim)算法(实质是顶点优先)、克鲁斯卡尔(Kruskal)算法(实质是边优先),掌握他们的手动构造过程,了解算法;6、理解求关节点算法,可见算法7.10、7.11;7、了解拓扑排序;8、掌握由AOE-网得到关键路径的方法(手动),了解算法(7.13、7.14);9、掌握最短路径的手动求解过程、方法(两种:迪杰斯特拉Dijkstra、弗洛伊德Floyd),了解算法;10、补充:Prim算法、Kruskal算法、Dijkstra 算法、Floyd算法的时间复杂度;11、补充:了解拓扑排序算法;12、补充:能将图的抽象定义,如有向图G=(V,{A}),V={v1,v2,v3,v4},A={<v1,v2>,<v1,v3>,<v3,v4>,<v4,v1>}画成图,也能将图用抽象定义写出;13、补充:能根据图的邻接表、逆邻接表、数组表示法表示出来的图画出,亦能根据图写出其邻接表、逆邻接表、数组表示法;14、补充:了解四色定理(Four color theorem):最先是由一位叫古德里(Francis Guthrie)的大学生提出来的。

德·摩尔根(Augustus De Morgan,1806~1871)1852年10月23日致的一封信提供了有关四色定理来源的最原始的记载。

他在信中简述了自己证明四色定理的设想与感受。

四色问题的内容是:“任何一张只用四种颜色就能使具有共同边界的国家染上不同的颜色。

”用数学语言表示,即“将平面任意地细分为不相重叠的区域,每一个区域总可以用1,2,3,4这四个数字之一来标记,而不会使相邻的两个区域得到相同的数字。

相关文档
最新文档