二叉树与线性表概念
全国计算机二级第1章数据结构与算法

考点1 算法的复杂度【考点精讲】1.算法的基本概念计算机算法为计算机解题的过程实际上是在实施某种算法。
算法的基本特征:可行性、确定性、有穷性、拥有足够的情报。
2.算法复杂度算法复杂度包括时间复杂度和空间复杂度。
名称描述时间复杂度是指执行算法所需要的计算工作量空间复杂度是指执行这个算法所需要的内存空间考点2 逻辑结构和存储结构【考点精讲】1.逻辑结构数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合中的若干关系来表示。
数据的逻辑结构有两个要素:一是数据元素的集合,通常记为D;二是D上的关系,它反映了数据元素之间的前后件关系,通常记为R。
一个数据结构可以表示成B=(D,R)其中B表示数据结构。
为了反映D中各数据元素之间的前后件关系,一般用二元组来表示。
例如,如果把一年四季看作一个数据结构,则可表示成B =(D,R)D ={春季,夏季,秋季,冬季}R ={(春季,夏季),(夏季,秋季),(秋季,冬季)}2.存储结构数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。
由于数据元素在计算机存储空间中的位置关系可能与逻辑关系不同,因此,为了表示存放在计算机存储空间中的各数据元素之间的逻辑关系(即前后件关系),在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。
一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接等存储结构。
顺序存储方式主要用于线性的数据结构,它把逻辑上相邻的数据元素存储在物理上相邻的存储单元里,结点之间的关系由存储单元的邻接关系来体现。
链式存储结构就是在每个结点中至少包含一个指针域,用指针来体现数据元素之间逻辑上的联系。
考点3 线性结构和非线性结构【考点精讲】根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。
如果一个非空的数据结构满足下列两个条件:(1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件。
中南民族大学842计算机专业基础综合数据结构算法设计与分析C语言程序设计2021年考研专业课初试大纲

附件2:中南民族大学2021年硕士研究生入学考试自命题科目考试大纲(计算机科学学院)科目名称:计算机专业基础综合(数据结构、算法设计与分析、C语言程序设计)科目代码:842适用学科(类别)专业(领域):计算机科学与技术、电子信息(计算机技术方向)……………………………………………………………一、考试性质计算机专业基础综合是为招收计算机科学与技术学科、电子信息的硕士研究生而设置的具有选拔性质的考试科目,其目的是科学、公平、有效地测试考生掌握计算机科学与技术学科大学本科阶段专业知识、基本理论、基本方法的水平和分析问题、解决问题的能力,评价的标准是高等院校计算机科学与技术学科优秀本科毕业生所能达到的及格或及格以上水平,确保硕士研究生的招生质量。
二、考查目标要求考生比较系统地掌握数据结构、算法设计与分析和C语言程序设计的基本概念、基本原理和基本方法,能够综合运用所学的基本原理和基本方法分析、判断和解决有关理论问题和实际应用问题。
三、考试形式和试卷结构1.试卷满分及考试时间本试卷满分为150分,考试时间为180分钟。
2.考试方式为闭卷、笔试。
3.试卷考查的题型及其比例单项选择题约40分简答题约30分综合分析题约50分算法设计题约30分四、考查内容【考查目标】1.掌握数据结构、算法的基本概念、基本原理和基本方法。
2.掌握数据的逻辑结构、存储结构及基本操作的实现,能够对算法进行基本的时间复杂度与空间复杂度的分析。
3.能够运用数据结构、算法的基本原理和方法进行问题的分析与求解,具备采用C或C++语言设计与实现算法的能力。
一、线性表(一)线性表的定义和基本操作(二)线性表的实现1.顺序存储2.链式存储3.线性表的应用二、栈、队列(一)栈和队列的基本概念(二)栈和队列的顺序存储结构(三)栈和队列的链式存储结构(四)栈和队列的应用三、串、数组(一)串的存储表示(二)串的模式匹配算法(三)数组的顺序存储(四)特殊矩阵的压缩存储四、树与二叉树(一)树的基本概念(二)二叉树1.二叉树的定义及其主要特征2.二叉树的顺序存储结构和链式存储结构3.二叉树的递归与非递归遍历4.线索二叉树的基本概念和构造(三)树、森林1.树的存储结构2.森林与二叉树的转换3.树和森林的遍历(四)树与二叉树的应用1.哈夫曼(Huffman)树和哈夫曼编码五、图(一)图的基本概念(二)图的存储及基本操作1.邻接矩阵法2.邻接表法3.邻接多重表、十字链表(三)图的遍历1.深度优先搜索2.广度优先搜索(四)图的基本应用1.最小(代价)生成树2.最短路径3.拓扑排序4.关键路径六、查找(一)查找的基本概念(二)线性表的查找1.顺序查找法2.折半查找法3.分块查找法(三)树表的查找1.二叉排序树2.平衡二叉树3.B-树4.B+树(四)散列(Hash)表的查找(五)查找算法的分析及应用七、排序(一)排序的基本概念(二)插入排序1.直接插入排序2.折半插入排序3.希尔排序(三)交换排序1.冒泡排序2.快速排序(四)选择排序1.简单选择排序2.堆排序(五)二路归并排序(六)基数排序(七)外部排序(八)各种排序算法的比较(九)排序算法的应用八、算法基础(一)算法的概念、特征(二)算法分析基础1.非递归算法的分析框架及应用2.递归算法的分析框架及应用3.三个渐进符号的意义及应用(三)算法设计技巧1.蛮力法(基本思想)2.分治法(基本思想、主定理、具体应用)3.减治法(基本思想、三个变种、具体应用)4.变治法(基本思想、三个变种、具体应用)5.动态规划(基本思想、主要步骤、具体应用)6.贪心法(基本思想、具体应用)九、C语言程序设计部分(一)C语言基础知识1.C数据类型、表达式、输入输出2.选择控制结构、循环控制结构3.函数4.数组5.指针(二)C语言高级知识1.指针和数组2.指针和字符串3.结构体和共用体(三)文件操作五、参考书目1.严蔚敏,李冬梅,吴伟民.数据结构(C语言版)(第2版).人民邮电出版社.20152.莱维汀著,潘彦译.算法设计与分析基础(第3版).清华大学出版社.20153.苏小红,王宇颖,孙志岗.C语言程序设计(第3版).高等教育出版社.2015六、特殊说明本自命题考试科目无需计算器。
03、1数据结构第一部分--线性表-树与二叉树

数据结构(一)目录第1章序论 (1)1.1 什么是数据? (1)1.2 什么是数据元素? (1)1.3 什么是数据结构及种类? (1)1.4 数据的逻辑结构 (1)1.5 数据的物理结构 (1)1.6 算法和算法分析 (1)1.7 算法的五个特性 (1)1.8 算法设计的要求 (2)1.9 算法效率的度量 (2)第2章线性表 (3)2.1 线性表举例 (3)2.2 线性表的存储 (4)2.3 线性表-栈 (4)2.4 队列 (4)2.5 双端队列 (6)第3章树和二叉树 (6)3.1 树 (6)3.1.1 树的基本概念 (6)3.1.2 树的常用存储结构 (6)3.1.3 树的遍历 (7)3.2 二叉树 (7)3.2.1 二叉树的基本概念 (7)3.2.2 二叉树与树的区别 (7)3.2.3 树及森林转到二叉树 (7)3.2.4 二叉树的性质 (8)3.2.5 满二叉树 (8)3.2.6 完全二叉树 (8)3.2.7 完全二叉树的性质 (9)3.2.8 二叉树的四种遍历 (9)3.2.9 二叉排序树 (10)3.2.10 平衡二叉树 (11)3.2.11 m阶B-树 (11)3.2.12 最优二叉树 (11)3.2.13 二叉树的存储结构 (12)3.3 广义表 (13)3.4 矩阵的压缩存储 (14)3.4.1 特殊矩阵 (14)3.4.2 压缩存储 (14)第4章历年真题讲解 (15)4.1 2009年上半年 (15)4.2 2009年下半年 (15)4.3 2010年上半年 (15)4.4 2011年上半年 (16)4.5 2011年下半年 (16)4.6 2012年上半年 (17)4.7 2012年下半年 (17)4.8 2013年上半年 (18)4.9 2013年下半年 (18)4.10 2014年上半年 (18)4.11 2014年下半年 (19)4.12 2015年上半年 (19)4.13 2015年下半年 (19)4.14 2016年上半年 (20)第1章序论什么是数据?所有能输入到计算机中并能够被计算机程序处理的符号的总称,它是计算机程序加工的原料。
《数据结构》期末考试试卷试题及答案

《数据结构》期末考试试卷试题及答案一、选择题(每题5分,共20分)1. 下列哪个不是线性结构?A. 栈B. 队列C. 图D. 数组2. 下列哪个不是栈的基本操作?A. 入栈B. 出栈C. 查找D. 判断栈空3. 下列哪个不是队列的基本操作?A. 入队B. 出队C. 查找D. 判断队列空4. 下列哪个不是图的基本概念?A. 顶点B. 边C. 路径D. 环二、填空题(每题5分,共20分)5. 栈是一种______结构的线性表,队列是一种______结构的线性表。
6. 图的顶点集记为V(G),边集记为E(G),则无向图G=(V(G),E(G)),有向图G=(______,______)。
7. 树的根结点的度为______,度为0的结点称为______。
8. 在二叉树中,一个结点的左子结点是指______的结点,右子结点是指______的结点。
三、简答题(每题10分,共30分)9. 简述线性表、栈、队列、图、树、二叉树的基本概念。
10. 简述二叉树的遍历方法。
11. 简述图的存储结构及其特点。
四、算法题(每题15分,共30分)12. 编写一个算法,实现栈的入栈操作。
13. 编写一个算法,实现队列的出队操作。
五、综合题(每题20分,共40分)14. 已知一个无向图G=(V,E),其中V={1,2,3,4,5},E={<1,2>,<1,3>,<2,4>,<3,4>,<4,5>},画出图G,并给出图G的邻接矩阵。
15. 已知一个二叉树,其前序遍历序列为ABDCE,中序遍历序列为DBACE,请画出该二叉树,并给出其后序遍历序列。
答案部分一、选择题答案1. C2. C3. C4. D二、填空题答案5. 后进先出先进先出6. V(G),E(G)7. 0 叶结点8. 左孩子右孩子三、简答题答案9. (1)线性表:一个线性结构,其特点是数据元素之间存在一对一的线性关系。
《数据结构(C语言-耿国华版)》复习大纲

第一章绪论1.数据:人们利用文字符号、数字符号及其他规定的符号对现实世界的事物及其活动的描述。
凡是能被计算机输入、存储、处理和输出的一切信息都叫数据。
2.数据元素:数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
数据元素的组成:一个数据元素通常由一个或若干数据项组成。
数据项:指具有独立含义的最小标识单位。
3.数据对象:性质相同的数据元素的集合,是数据的一个子集。
4.数据结构:研究的是数据的逻辑结构和物理结构,以及它们之间的相互关系和所定义的算法在计算机上运行的学科。
5.算法:是对待定问题求解步骤的一种描述,是指令的有限序列。
算法应满足以下性质:1)输入性:具有零个或若干个输入量;2)输出性:至少产生一个输出;3)有穷性:每条指令的执行次数是有限的;4)确定性:每条指令的含义明确,无二义性;5)可行性:每条指令都应在有限的时间内完成。
6.评价算法优劣的主要指标:1)执行算法后,计算机运行所消耗的时间,即所需的机器时间;2)执行算法时,计算机所占存储量的大小,即所需的存储空间;3)所设计的算法是否易读、易懂,是否容易转换成其他可运行的程序语言。
7.会估算某一算法的总执行时间和时间复杂度。
8.熟悉习题P32:3(5)-(9)、4(2)(3)第二章线性表1.线性表(P7):是性质相同的一组数据元素序列。
线性表的特性:1)数据元素在线性表中是连续的,表中数据元素的个数可以增加或减少,但调整后数据元素仍必须是连续的,即线性表是一种线性结构。
2)数据元素在线性表中的位置仅取决于自己在表中的序号,并由该元素数据项中的关键字(key)加以标识。
3)线性表中所有数据元素的同一数据项,其属性是相同的,数据类型也是一致的。
线性表的主要运算有:插入、删除、查找、存取、长度、排序、复制、合并。
线性表的顺序存储结构及特点(就是把表中相邻的数据元素存放在内存邻接的存储单元,这种存储方法叫做顺序分配,又称顺序映像。
数据结构ppt课件

数据结构的定义数据结构是计算机中存储、组织数据的方式,它定义了数据元素之间的逻辑关系以及如何在计算机中表示这些关系。
提高算法效率合适的数据结构可以显著提高算法的执行效率,降低时间复杂度和空间复杂度。
简化程序设计数据结构为程序设计提供了统一的抽象层,使得程序员可以更加专注于问题本身,而不是底层的数据表示和访问细节。
便于数据管理和维护良好的数据结构设计可以使得数据的管理和维护变得更加方便和高效。
数据结构的定义与重要性线性数据结构中的元素之间存在一对一的关系,如数组、链表、栈和队列等。
线性数据结构非线性数据结构中的元素之间存在一对多或多对多的关系,如树、图等。
非线性数据结构静态数据结构在程序运行期间不会发生改变,如数组、静态链表等。
静态数据结构动态数据结构在程序运行期间可以动态地添加或删除元素,如链表、动态数组等。
动态数据结构数据结构的分类01020304在计算机科学中,数据结构是算法设计和分析的基础,广泛应用于操作系统、编译原理、数据库等领域。
计算机科学在软件工程中,数据结构是软件设计和开发的重要组成部分,用于实现各种软件功能和性能优化。
软件工程在人工智能中,数据结构用于表示和处理各种复杂的数据和知识,如神经网络、决策树等。
人工智能在大数据处理中,数据结构用于高效地存储、管理和分析海量数据,如分布式文件系统、NoSQL 数据库等。
大数据处理数据结构的应用领域0102线性表是具有n个数据元素的有限序列创建、销毁、清空、判空、求长度、获取元素、修改元素、插入元素、删除元素等线性表的定义线性表的基本操作线性表的定义与基本操作03用一段地址连续的存储单元依次存储线性表的数据元素顺序存储结构的定义可以随机存取,即可以直接通过下标访问任意元素;存储密度高,每个节点只存储数据元素顺序存储结构的优点插入和删除操作需要移动大量元素;空间利用率不高,需要提前分配存储空间顺序存储结构的缺点链式存储结构的定义01用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的链式存储结构的优点02插入和删除操作不需要移动大量元素,只需要修改指针;空间利用率高,不需要提前分配存储空间链式存储结构的缺点03不能随机存取,只能通过从头节点开始遍历的方式访问元素;存储密度低,每个节点除了存储数据元素外,还需要存储指向下一个节点的指针0102定义栈(Stack)是一种特殊的线性数据结构,其操作只能在一端(称为栈顶)进行,遵循后进先出(LIFO)的原则。
《数据结构》课程设计

《数据结构》课程设计一、课程目标《数据结构》课程旨在帮助学生掌握计算机科学中基础的数据组织、管理和处理方法,培养其运用数据结构解决实际问题的能力。
课程目标如下:1. 知识目标:(1)理解基本数据结构的概念、原理和应用,如线性表、栈、队列、树、图等;(2)掌握常见算法的设计和分析方法,如排序、查找、递归、贪心、分治等;(3)了解数据结构在实际应用中的使用,如操作系统、数据库、编译器等。
2. 技能目标:(1)能够运用所学数据结构解决实际问题,具备良好的编程实践能力;(2)掌握算法分析方法,能够评价算法优劣,进行算法优化;(3)能够运用数据结构进行问题建模,提高问题解决效率。
3. 情感态度价值观目标:(1)激发学生对计算机科学的兴趣,培养其探索精神和创新意识;(2)培养学生团队合作意识,学会与他人共同解决问题;(3)增强学生的责任感和使命感,使其认识到数据结构在信息技术发展中的重要性。
本课程针对高中年级学生,结合学科特点和教学要求,将目标分解为具体的学习成果,为后续教学设计和评估提供依据。
课程注重理论与实践相结合,旨在提高学生的知识水平、技能素养和情感态度价值观。
二、教学内容《数据结构》教学内容依据课程目标进行选择和组织,确保科学性和系统性。
主要包括以下部分:1. 线性表:- 线性表的定义、特点和基本操作;- 顺序存储结构、链式存储结构及其应用;- 线性表的相关算法,如插入、删除、查找等。
2. 栈和队列:- 栈和队列的定义、特点及基本操作;- 栈和队列的存储结构及其应用;- 栈和队列相关算法,如进制转换、括号匹配等。
3. 树和二叉树:- 树的定义、基本术语和性质;- 二叉树的定义、性质、存储结构及遍历算法;- 线索二叉树、哈夫曼树及其应用。
4. 图:- 图的定义、基本术语和存储结构;- 图的遍历算法,如深度优先搜索、广度优先搜索;- 最短路径、最小生成树等算法。
5. 排序和查找:- 常见排序算法,如冒泡、选择、插入、快速等;- 常见查找算法,如顺序、二分、哈希等。
《数据结构》课件

第二章 线性表
1
线性表的顺序存储结构
2
线性表的顺序存储结构使用数组来存储元素,
可以快速随机访问元素。
3
线性表的常见操作
4
线性表支持常见的操作,包括插入、删除、 查找等,可以灵活地操作其中的元素。
线性表的定义和实现
线性表是一种数据结构,它包含一组有序的 元素,可以通过数组和链表来实现。
线性表的链式存储结构
线性表的链式存储结构使用链表来存储元素, 支持动态扩展和插入删除操作。
第三章 栈与队列
栈的定义和实现
栈是一种特殊的线性表,只能在一 端进行插入和删除操作,遵循后进 先出的原则。
队列的定义和实现
队列是一种特殊的线性表,只能在 一端进行插入操作,在另一端进行 删除操作,遵循先进先出的原则。
栈和队列的应用场景和操作
哈希表是一种高效的查找数据结构, 通过哈希函数将关键字映射到数组 中,实现快速查找。
排序算法包括冒泡排序、插入排序 和快速排序等,可以根据数据规模 和性能要求选择合适的算法。
结语
数据结构的学习心得 总结
学习数据结构需要掌握基本概念 和常见操作,通过实践和练习加 深理解和熟练度。
下一步学习计划的安 排
在掌握基本数据结构的基础上, 可以进一步学习高级数据结构和 算法,提升编程技能。
相关学习资源推荐
推荐一些经典的数据结构教材和 在线学习资源,如《算法导论》 和LeetCode等。
栈和队列在计算机科学中有许多应 用,如函数调用、表达式求值和作 业调度等。
第四章 树与二叉树
树的定义和性质
树是由节点和边组成的一种非线性数据结构,每个 节点可以有多个子节点。
二叉树的遍历方式
二叉树的遍历方式包括前序遍历、中序遍历和后序 遍历,可以按不同顺序输出节点的值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
线性表
一、建立单链表
假设线性表中结点的数据类型是字符,我们逐个输入这些字符型的结点,并以换行符‘\n’为输入结束标记。
动态地建立单链表的常用方法有如下两种:
1、头插法建表
该方法从一个空表开始,重复读入数据,生成新结点,将读入数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头上,直到读入结束标志为止。
2、尾插法建表
头插法建立链表虽然算法简单,但生成的链表中结点的次序和输入的顺序相反。
若希望二者次序一致,可采用尾插法建表。
该方法是将新结点插入到当前链表的表尾上,为此必须增加一个尾指针r,使其始终指向当前链表的尾结点。
•如果我们在链表的开始结点之前附加一个结点,并称它为头结点(dummy head node),那么会带来以下两个优点:
a、由于开始结点的位置被存放在头结点的指针域中,所以在链表的第一个位置上的操作就和在表的其它位置上的操作一致,无需进行特殊处理;
b、无论链表是否为空,其头指针是指向头结点在的非空指针(空表中头结点的指针域为空),因此空表和非空表的处理也就统一了。
二、查找运算
1、按序号查找
在链表中,即使知道被访问结点的序号i,也不能象顺序表中那样直接按序号i访问结点,而只能从链表的头指针出发,顺链域next逐个结点往下搜索,直到搜索到第i个结点为止。
因此,链表不是随机存取结构。
设单链表的长度为n,要查找表中第i个结点,仅当1≦i≦n时,i的值是合法的。
但有时需要找头结点的位置,故我们将头结点看做是第0 个结点,
2、按值查找
按值查找是在链表中,查找是否有结点值等于给定值key的结点,若有的话,则返回首次找到的其值为key的结点的存储位置;否则返回NULL。
查找过程从开始结点出发,顺着链表逐个将结点的值和给定值key作比较。
三、插入运算
插入运算是将值为x的新结点插入到表的第i个结点的位置上,即插入到a i-1与a i之间。
因此,我们必须首先找到a i-1的存储位置p,然后生成一个数据域为x的新结点*p,并令结点*p的指针域指向新结点,新结点的指针域指向结点a i。
从而实现三个结点a i-1,x和a i之间
的逻辑关系的变化。
四、删除运算
线性表实现方法的比较
•实现不同
–顺序表方法简单,各种高级语言中都有数组类型,容易实现;链表的操作是基于指针的,相对来讲复杂些。
•存储空间的占用和分配不同
–从存储的角度考虑,顺序表的存储空间是静态分配的,在程序执行之前必须明确规定它的存储规模,也就是说事先对“MAXSIZE”要有合适的设定,过大
造成浪费,过小造成溢出。
而链表是动态分配存储空间的,不用事先估计存
储规模。
可见对线性表的长度或存储规模难以估计时,采用链表。
•线性表运算的实现不同
–按序号访问数据元素,使用顺序表优于链表。
–插入删除操作,使用链表优于顺序表。
双向链表(Doubly Linked Lists):在单链表的每个结点里再增加一个指向其直接前趋的指针域prior。
这样就形成的链表中有两个方向不同的链,故称为双向链表。
和单链表(Single Linked Lists)类似,双链表一般也是由头指针唯一确定的,增加头指针也能使双链表上的某些运算变得方便,将头结点和尾结点链接起来也能构成循环链表,并称之为双向循环链表。
设指针p指向某一结点,则双向链表结构的对称性可用下式描述:
(p—>prior)—>next=p=(p—>next)—>prior
即结点*p的存储位置既存放在其前趋结点*(p—>prior)的直接后继指针域中,也存放在它的后继结点*(p—>next)的直接前趋指针域中。
双向链表的删除
双向链表的插入
静态链表与动态链表
静态链表的操作和动态链表相似,只是以整型游标代替动态指针。
设以Sa 表示静态链表,通常可把Sa[0]理解为“头结点”,第1个元素的位置由Sa[0].next 指出,用全局整型变量av 指出可利用空间的下标。
初始时将整个静态链表看作一个“空表”,操作中用GetNode()和FreeNode()函数模拟C 中的malloc()和free()函数。
堆栈和队列
栈是后进先出(LIFO 后进先出)列表,即有序列表中插入和删除在上面进行。
对象:一个具有零或多个元素的有限有序列表。
-操作数的顺序是中序和后序相同。
-运算符优先级较高的出现在优先级较低的前面。
〖Example 〗An infix 中序 expression: a +b *c -d /e
A prefix 先序 expression: -+a *b c /d e
A postfix 后续 expression: a b c *+d e /-
〖Example 〗 6 2 / 3 - 4 2 *+ = 8
〖Example 〗a +b *c -d = a b c * + d –
〖Example 〗 a * ( b + c ) /d = a b c + * d /
观察时发现不是在堆栈,它的优先级是最高的;但当它在栈中,它的优先级是最低的。
定义在栈中的优先级和对符号的优先顺序,并且每一次使用相应的优先级进行比较。
Note: a – b – c 将被转换为b –c –.然而, 2^2^3 (
)必须转换为2 2 3 ^^, 而
不是 2 2 ^ 3 ^由于幂自右向左联系。
322
队列是先进先出(FIFO)列表,即有序列表中插入发生在一端而删除发生在另一端。
对象:一个具有零或多个元素的有限有序列表。
完全二叉树(Complete Binary Tree)
1、若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。
2、完全二叉树是由满二叉树而引出来的。
对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。
3、一棵二叉树至多只有最下面的两层上的结点的度数可以小于2,并且最下层上的结点都集中在该层最左边的若干位置上,则此二叉树成为完全二叉树。
在树中,该节点的子女的个数称为节点的度。