收藏 分享(赏)

信息学奥赛-计算机基础知识.doc

上传人:tangtianxu1 文档编号:2927582 上传时间:2018-09-30 格式:DOC 页数:33 大小:884KB
下载 相关 举报
信息学奥赛-计算机基础知识.doc_第1页
第1页 / 共33页
信息学奥赛-计算机基础知识.doc_第2页
第2页 / 共33页
信息学奥赛-计算机基础知识.doc_第3页
第3页 / 共33页
信息学奥赛-计算机基础知识.doc_第4页
第4页 / 共33页
信息学奥赛-计算机基础知识.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、第 1 页 共 33 页第一章 计算机基础知识 2第一节 数制及其转换 2第二节 算术运算和逻辑运算 3第三节 原码、反 码和补码 5第四节 浮点数的表示方法 6第五节 奇偶校验 7第六节 ASCII 码表 .8第二章 计算机硬件基础 9第一节 中央处理器 9第二节 存储器系统 10第三节 输入输出系统 11第三章 网络基础知识 12第一节 网络的组成与结构 12第二节 网络协议 13第三节 Internet 相关知识 .13第三节 Internet 相关知识 .14第四章 其他相关基础知识 15第一节 计算机病毒 15第二节 数据库系统 15第五章 数据结构之线性结构 16第一节 线性表 1

2、6第二节 栈 17第三节 队列 18第六章 数据结构之非线性结构 19第一节 树的概念 19第二节 树的表示方法和存储结构 20第三节 二叉树的概念 22第四节 二叉树的遍历 24第五节 普通树的遍历 27第六节 根据两种遍历顺序确定树结构 28第七节 二叉排序树 29第八节 最优二叉树(哈夫曼树 ) .30AOE 网 .32第 2 页 共 33 页第一章 计算机基础知识第一节 数制及其转换一、二、八、十六进制转十进制的方法:乘权相加法。 例如:(11010110) 2 = 127 + 126 + 025 + 124 + 023 + 122 + 121 + 020 = (214) 10(236

3、5) 8 = 283 + 382 + 681 + 580 = (1269) 10(4BF) 16 = 4162 + 11161 + 15160 = (1215)10 带小数的情况:(110.011)2 = 12 2 + 121 + 120 + 02-1 + 12-2 + 12-3 = (6.375) 10(5.76) 8 = 580 + 78-1 + 68-2 = (5.96875) 10(D.1C) 16 = 13160 + 116-1 + 12*16-2 = (13.109375) 10 二、十进制化二进制的方法:整数部分除二取余法,小数部分乘二取整法。 例一:(43) 10 = (101

4、011) 2 例二:(0.375) 10 = (0.011) 2三、二进制转八进制的方法 一位数八进制与二进制对应表八进制 二进制0 0001 0012 0103 0114 1005 1016 1107 111转换方法:对二进制以小数点为分隔,往前往后每三位划为一组,不足三位补 0,按上表用对应的八进制数字代入即可。例如:(10111011.01100111)= 010,111,011.011,001,110= (273.36) 8第 3 页 共 33 页三、二进制转十六进制的方法 一位数十六进制与二进制对应表十六进制 二进制0 00001 00012 00103 00114 01005 01

5、016 01107 01118 10009 1001A 1010B 1011C 1100D 1101E 1110F 1111转换方法:对二进制以小数点为分隔,往前往后每四位划为一组,不足四位补 0,按上表用对应的十六进制数字代入即可。例如:(10111011.01100111)= 1011,1011.0110,0111 = (BB.67) 16四、进制的英文表示法:以上都是用括号加数字的表示方法,另外还有英文表示法,就是以BIN、OCT、HEX、DEC 分别代表二、八、十六、十进制。或者只写第一个字母。例如1101B 表示是二进制。有些地方为了避免“O”跟“0”混淆,把 O 写成 Q。第二节

6、算术运算和逻辑运算一、二进制的算术运算 1、加法运算规则:0+0=0 0+1=1 1+0=1 1+1=10 2、减法运算规则:0-0=0 0-1=1(向高位借 1) 1-0=1 1-1=0 3、乘法运算规则:00=0 01=0 10=0 11=1 二、逻辑运算 1、基本运算 逻辑乘,也称“与”运算,运算符为“”或“”00=0 01=0 10=0 11=1使用逻辑变量时,AB 可以写成 AB 逻辑加,也乘“或”运算,运算符为“+”或“”0+0=0 0+1=1 1+0=1 1+1=1第 4 页 共 33 页 逻辑非,也称“反”运算,运算符是在逻辑值或变量符号上加“”= 1 = 002、常用运算异或

7、运算:AB =A B BA2、基本公式 0,1 律A0=0A1=AA0=AA1=1 交换律AB=BAAB=BA 结合律ABC =(AB)C = A(BC)ABC =(AB)C = A(BC) 分配律A(BC)= AB AC 重叠律AA.A = AAA.A = A 互补律A + = 1 A = 0 吸收律AAB = A A(AB) = AA B = AB A( B) = AB 对合律对一个逻辑变量两次取反仍是它本身 德摩根定理= = +BA三、逻辑代数的应用1、逻辑表达式化简例如: F = A AB B= A( B) (利用分配律)= A (利用互补律以及 0,1 律)第 5 页 共 33 页=

8、 A (利用吸收律) B2、对指定位进行运算,假设变量 A 有八位,内容是 d7d6d5d4d3d2d1d0 将变量 A 的 d5位清零A(11011111)A 将变量 A 的各位置 1A(11111111)A第三节 原码、反码和补码计算机中参与运算的数有正负之分,计算机中的数的正负号也是用二进制表示的。用二进制数表示符号的数称为机器码。常用的机器码有原码、反码和补码。 一、原码 求原码的方法:设 X;若 X0,则符号位(原码最高位)为 0,X 其余各位取值照抄;若 X0,则符号位为 1,其余各位照抄。【例 1】X=+1001001 X 原 = 01001001【例 2】X=-1001001

9、X 原 = 11001001 二、反码 求反码的方法:设 X;若 X0,则符号位(原码最高位)为 0,X 其余各位取值照抄;若 X0,则符号位为 1,其余各位按位取反。【例 3】X=+1001001 X 反 = 01001001【例 4】X=-1001001 X 反 = 10110110 三、补码 求补码的方法:设 X;若 X0,则符号位(原码最高位)为 0,X 其余各位取值照抄;若 X0,则符号位为 1,其余各位按位取反后,最低位加 1。【例 5】X=+1001001 X 补 = 01001001【例 6】X=-1001001 X 补 = 10110111 四、补码加减法计算机中实际上只有加

10、法,减法运算转换成加法运算进行,乘法运算转换成加法运算进行,除法运算转换成减法运算进行。用补码可以很方便的进行这种运算。 1、补码加法X+Y补 = X补 + Y补【例 7】X=+0110011,Y=-0101001,求X+Y 补X补 =00110011 Y补 =11010111第 6 页 共 33 页X+Y补 = X补 + Y补 = 00110011+11010111=00001010注:因为计算机中运算器的位长是固定的,上述运算中产生的最高位进位将丢掉,所以结果不是100001010,而是 00001010。 2、补码减法X-Y补 = X补 - Y补 = X补 + -Y补其中-Y 补 称为负

11、补,求负补的方法是:对补码的每一位(包括符号位)求反,最后末位加“1”。【例 8】X=+0111001,Y=+1001101,求X-Y 补X补 =00111001 Y补 =01001101 -Y补 = 10110011X-Y补 = X补 + -Y补 = 00111001+10110011=11101100 五、数的表示范围通过上面的学习,我们就可以知道计算机如果用一个字节表示一个整数的时候,如果是无符号数,可以表示 0255 共 256 个数(0000000011111111),如果是有符号数则能表示-128127 共 256 个数(1000000001111111)。如果两个字节表示一个整数

12、,则共有 65536 个数可以表示,大部分程序设计语言中整数的范围都是-3276832767 的原因,可以看出这种整数类型是 16 位的有符号数,而且是补码表示的。第四节 浮点数的表示方法一、浮点数表示 一个数的浮点形式(设基数是 2)可写成:N = M 2E其中:M 代表尾数,E 代表阶码。 计算机中浮点数只用尾数和阶码表示,其形式如下:阶码 尾数符号 尾数浮点数的精度由尾数决定,数的表示范围由阶码的位数决定。为了最大限度提高精度,尾数采用规格化形式,既 1/2M 82 R 102 f 122 z43 + 63 ? 83 S 103 g 123 44 , 64 84 T 104 h 124

13、|45 - 65 A 85 U 105 i 125 46 . 66 B 86 V 106 j 126 47 / 67 C 87 W 107 k 48 0 68 D 88 X 108 l 49 1 69 E 89 Y 109 m 50 2 70 F 90 Z 110 n 51 3 71 G 91 111 o 目前使用最广泛的西文字符集及其编码是 ASCII 字符集和 ASCII 码( ASCII 是 American Standard Code for Information Interchange 的缩写),它同时也被国际标准化组织( International Organization fo

14、r Standardization, ISO )批准为国际标准。 基本的 ASCII 字符集共有 128 个字符,其中有 96 个可打印字符,包括常用的字母、数字、标点符号等,另外还有 32 个控制字符。标准 ASCII 码使用 7 个二进位对字符进行编码,对应的 ISO 标准为 ISO646 标准。下表展示了基本 ASCII 字符集及其编码: 字母和数字的 ASCII 码的记忆是非常简单的。我们只要记住了一个字母或数字的 ASCII 码(例如记住 A 为 65 , 0 的 ASCII 码为 48 ),知道相应的大小写字母之间差 32 ,就可以推算出其余字母、数字的 ASCII 码。 虽然标准

15、 ASCII 码是 7 位编码,但由于计算机基本处理单位为字节( 1byte = 8bit ),所以一般仍以一个字节来存放一个 ASCII 字符。每一个字节中多余出来的一位(最高位)在计算机内部通常保持为 0 (在数据传输时可用作奇偶校验位)。 由于标准 ASCII 字符集字符数目有限,在实际应用中往往无法满足要求。为此,国际标准化组织又制定了 ISO2022 标准,它规定了在保持与 ISO646 兼容的前提下将 ASCII 字符集扩充为 8 位代码的统一方法。 ISO 陆续制定了一批适用于不同地区的扩充 ASCII 字符集,每种扩充 ASCII 字符集分别可以扩充 128 个字符,这些扩充字

16、符的编码均为高位为 1 的 8 位代码(即十进制数 128255 ) ,称为扩展 ASCII 码。下表展示的是最流行的一套扩展 ASCII 字符集和编码:第 9 页 共 33 页第二章 计算机硬件基础第一节 中央处理器一、中央处理器的组成 中央处理器简称 CPU,由控制器、运算器组成。运算器及控制器的基本功能:运算器是计算机进行算术和逻辑运算的部件,控制器是整个计算机中统一指挥和控制计算机各部件进行工作的控制中心。 二、运算器运算器是负责对数据进行算术运算或逻辑运算的部件。运算器由算术逻辑单元(ALU)、累加器、状态寄存器、通用寄存器组等组成。如图: 算术逻辑运算单元、累加器和通用寄存器的位数

17、决定了 CPU 的字长。 三、控制器是计算机的指令执行部件,其工作是取指令、解释指令以及完成指令的执行。控制器由指令指针寄存器、指令寄存器、控制逻辑电路和时钟控制电路等组成。指令指针寄存器(IP)用于 产生及存放一条待取指令的地址。指令寄存器用于存放指令。指令从内存取出后放入指令寄存器。 四、寄存器寄存器数量增多可以提高 CPU 运行速度,但是不能太多,太多会使地址编码和指令长度变长,增加复杂度。由累加器、通用寄存器组、状态寄存器、指令寄存器、地址寄存器、其他寄存器等组成。 五、指令基本格式单目运算:操作码 地址码二目运算:操作码 第一地址 第二地址 六、寻址方式:CPU 执行指令时寻找数据地

18、址的方式1、立即寻址:ADD AH,78 其中 ADD 是操作码,表示做加法;AH 是寄存器名;78是个常数;该指令的意思是寄存器 AH 的值加上 78。2、直接寻址:ADD AH,(78) 78 表示操作数的地址3、间接寻址:ADD AH,(78) 78 表示操作数地址的地址4、相对寻址:ADD AH,*78 *78 表示本指令地址+78,78 称偏移量5、变址寻址:ADD AH,(DI+78) DI 是变址寄存器,存放一个地址,操作数地址是寄存器地址+786、寄存器直接寻址:ADD AH,78 AH 是一个寄存器名,即寄存器直接寻址7、寄存器直接寻址:ADD AH,(BX) BX 是一个寄

19、存器名,存放操作数的地址 第 10 页 共 33 页七、指令分类1、数据传送指令:MOV AH,BHIN AH,3782、数据处理指令:算术运算、逻辑运算、移位、比较等3、程序控制指令:转移、调用、返回4、状态管理指令:中断、屏蔽中断 八、指令的执行过程1、CPU 发出指令地址2、读取指令3、指令送指令寄存器4、指令译码5、按指令操作码执行6、形成下条要执行的指令的地址 九、时钟周期一个指令执行的时间称为指令周期计算机完成一个操作(如读取指令等)所需时间称为总线周期计算机中最基本的时间单位是时钟周期,有 CPU 的主频决定。第二节 存储器系统一、存储器的分类 分类方法 名称 举例半导体存储器

20、ROM、RAM(内存) 、闪存(优盘)磁表面存储器 硬盘、软盘、磁带按存储介质分光存储器 CD-ROM、DVD-ROM随机存储器 RAM(内存) 、硬盘、软盘只读存储器 ROM、CD-ROM按工作方式分顺序存储器 磁带二、多层次存储体系:如图 第 11 页 共 33 页三、主存储器1、特点:容量小、读写速度快、价格高2、编址方式:存储容量与地址线条数相对应,64M 的存储器至少需要 26 跟地址线(2 26=64M)注:我们目前的计算机大都是 32 位,也就是地址线条数有 32 条,所以其支持的最大内存容量为 4G3、分类: 随机存储器(RAM):就是我们通常称的内存,主要参数是存储容量和工作

21、频率。例如:一条 64M8 的内存条表示该内存条有 64M 个单元,每个单元 8 位。 只读存储器(ROM):只能读不能写,一般用于存放计算机启动所需的最基本程序。 缓冲存储器(Cache):速度最快,一般集成于 CPU 中。 四、辅助存储器1、磁带:顺序存储,一般只用在小型机以上的计算机中,用作数据备份。2、软盘:目前常见的一般为 3.5 寸高密盘,容量为 1.44MB,软盘结构如图注意:盘面最外层的磁道称为 0 磁道,0 磁道如果损坏,则盘片报废。3、硬盘:硬盘由多个盘面组成一个柱形结构,其原来跟软盘类似,但是磁道更多。4、光盘:利用光信号读取或写入的存储器。 CD-ROM:只读,容量 6

22、50MB 左右,一倍速为 150KB/s DVD-ROM:只读,容量 4.7GB 左右,一倍速为 1200KB/s CD-RW、DVD-RW:可擦写的光盘,但必须专门的刻录机。 第三节 输入输出系统一、输入输出控制方式1、程序查询方式:软件实现,效率低2、中断方式:软硬件结合实现中断请求中断响应中断处理中断返回3、直接存储器访问方式(DMA):硬件实现第 12 页 共 33 页DMA 请求CPU 响应并把总线控制权交给 DMA 控制器数据交换交还总线控制权 二、系统总线分类:数据总线、地址总线、控制总线总线标准:ISA 总线、PCI 局部总线、MCA 总线 三、I/O 接口1、显卡:分辨率、颜

23、色数决定显示效果和所需显存例如:显示分辨率为 12801024 的 32 位真彩色,所需显卡显存最少为12801024328 = 5MB2、硬盘接口: IDE、EIDE Ultra DMA SCSI SATA3、串行口4、并行口:通常接针式打印机5、USB 接口:通用串行总线 四、显示器的有关知识1、屏幕尺寸:15 寸、17 寸、19 寸等2、点间距:屏幕上象素与象素之间的距离,决定了显示器能显示的最大分辨率。 越小表示能显示的最大分辨率越大。 五、打印机:针式打印机、喷墨打印机、激光打印机。 激光打印机速度最快,针式打印机可以打印票据。 第三章 网络基础知识第一节 网络的组成与结构一、网络组

24、成1、通信主体:服务器和工作站2、通信设备:传输介质、网络设备3、通信协议:通常是 TCP/IP 二、网络分类按传输距离分:局域网(LAN)、城域网(MAN)、广域网(WAN)按网络结构分:总线型、星型、环型、树型 三、网络拓扑结构第 13 页 共 33 页第二节 网络协议一、OSI 网络协议的层次国际标准化组织(ISO)提出的“开放系统互连模型(OSI)”是计算机网络通信的基本协议。 该协议分为七层。如下表二、网络设备极其作用应用层表达层会话层传输层网络层数据链路层物理层第 14 页 共 33 页第三节 Internet 相关知识一、IP 地址每台与 Internet 连接的主机都必须有一个

25、 IP 地址,IP 地址采用分段式表示:共分 4 段,每段用一个字节即八个二进制位表示,实际的 IP 把二进制转换成十进制书写。如 61.153.238.132,因为每段时一个字节,因此 IP 每段的数字大小最大为 255。IP 地址分类如下表:目前 32 位 IP 地址资源几近枯竭,有人提出用 48 位表示IP,即 IPV6 。 分类 二进制表示 十进制表示第一段数字A类 0 七位网络地址 24 位主机地址 from where 功能:从表中选出满足条件的记录列 2、INSERT 语句语法:insert into (列名表) values()功能:在表中插入一条新记录。 3、DELETE 语

26、句语法:delete * from where 功能:删除满足条件的记录 4、UPDATE 语句语法:update set = where 功能:修改满足条件的表中某记录某字段的值 第五章 数据结构之线性结构第一节 线性表一、概念线性表是指由有限个类型相同的数据元素组成的集合,它有以下的特点:1.有唯一的头结点(即第一个数据元素)和尾结点(即最后一个数据元素);2.除结点外,集合中的每个数据元素均只有一个前驱; 3.除尾结点外,集合中的每一个数据元素均只有一个后继。 二、线性表的存储结构1、顺序结构:是通过数组说明分配连续地址的存储区,通过下标引用数组的相应元素。2、链式结构:通过指引元素类型

27、的变量对线性表中元素进行动态分配存储。 三、顺序存储结构1、一维数组 数组存储的结构在数组声明时就需要事先分配相应的连续内存空间用来存放数据。 按首地址(表中第一个元素的地址)的位移来访问数组每一个元素的。 若第一个元素的地址是 a,每个元素占用的存储空间为 L,则数组的第 i 个元素的地址可以用如下公式计算: d(i)=a+(i-1)*L2、二维数组第 17 页 共 33 页 定义方法::array1n,1m of 对于行为 n,列为 m 的二维数组的元素访问方法: 若第一个元素的地址是 a,每个元素占用的存储空间为 L,则数组的第(i,j)个元素的地址可以用如下公式计算:按行寻址:d(i,

28、j)=a+(i-1)*m*L+(j-1)*L按列寻址:d(i,j)=a+(j-1)*n*L+(i-1)*L 四、链式存储结构 链表是这样一种线性表,它的元素由数据和指针两部分组成,数据部分存放结点的有关信息,指针部分存放下一个结点的位置。优点:可根据需要分配数据元素的存储区,也可随时撤消链表中数据元素的存储区,插入删除操作只须改变指针,无须移动数据。缺点:它的数据元素必须在数据项以外至少增加一个指向后继元素的指针类型的数据项,查找其中的某个元素时必须中从第一个元素开始逐个往后找。 一个实例:Type pointer=node;node=Record;data:real;next:pointer

29、;End;Varhead,next:pointer;1.Head 为表的首指针,指向链表的第一个结点。 2.整个链表的存取必须从 head 指针出发,沿着每个结点的 next 指针顺序进行,最后个结点的 next 指针为“空”(nil).第二节 栈一、栈的概念栈是一种线性表,对它的插入和删除操作都限制在表的同一端进行。这一端叫做栈顶,另一个端叫做栈底。 栈又被成为“后进先出表”(LIFO)。定义方法:Const m=栈元素的上限; Typestack=array1m of Var s:stack; t:integer; 二、栈的基本运算1.入栈:过程 push(x),往栈 s 中压入一个元素

30、x。 procedure push(x:);第 18 页 共 33 页beginif t=m then writeln(overflow)else begint:=t+1;st:=x;end;end;2.出栈:函数 pop(x),从栈 s 中弹出一个元素。 function pop:;beginif t=0then writeln(empty)else beginpop:=st;t:=t-1;end;end;3.读栈顶元素:函数 top,读取栈 s 的栈顶元素。 function top:;beginif t=0then writeln(empty)else top:=st;end;第三节 队

31、列一、栈的概念队列是从日常生活中的排队抽象出来的,根据排队的原则“先来先服务”。 所谓队列就是允许在一端进行插入,另一端进行删除的线性表。允许插入的一端称为队尾,通常用一个队尾指针 r 指向队尾元素;允许删除的一端称为队首,通常也用一个队首指针 f 指向排头元素的前面。初始时,f=r=0。 队列又称为“先进先出(FIFO)”线性表。定义方法:Const m=队列元素上限; Type duilie=array1m of ; Var q:duilie; r,f:integer; 二、队列的基本运算1.过程 add(x):队列 q 插入元素 x Procedure add(x:integer);第

32、19 页 共 33 页beginif r=mthen writeln(overflow)else beginr:=r+1;qr:=x;end;end;2.过程 del(x):取出队列 q 的队首元素 y Procedure del(var y:integer);beginif f=rthen writeln(empty)else beginf:=f+1;y:=qf;end;end;第六章 数据结构之非线性结构第一节 树的概念一、树的定义树是一种常见的非线性的数据结构。 树的定义:树是 n(n0)个结点的有限集,这个集合满足以下条件: 有且仅有一个结点没有前驱(父亲结点),该结点称为树的根; 除

33、根外,其余的每个结点都有且仅有一个前驱; 除根外,每一个结点都通过唯一的路径连到根上。这条路径由根开始,而未端就在该结点上,且除根以外,路径上的每一个结点都是前一个结点的后驱(儿子结点); 二、结点的分类 第 20 页 共 33 页在树中,一个结点包含一个元素以及所有指向其子树的分支。 结点一般分成三类: 根结点:没有前驱的结点。在树中有且仅有一个根结点。如上图(b)中的 r; 分支结点:除根结点外,有后驱的结点称为分支结点。如上图(b)中的a,b,c,x,t,d,i。分支结点亦是其子树的根; 叶结点:没有后驱的结点称为树叶。如上图(b)中的w,h,e,f,s,m,o,n,j,u 为叶结点。由

34、树的定义可知,树叶本身也是其父结点的子树。 根结点到每一个分支结点或叶结点的路径是唯一的。例如上图(b)中,从根 r 到结点 i 的唯一路径为 rcti。 三、有关度的定义 结点的度:一个结点的子树数目称为该结点的度。在上图(b)中,结点 i 度为 3,结点 t 的度为 2,结点 b 的度为 1。显然,所有树叶的度为 0。 树的度:所有结点中最大的度称为该树的度。图(b)中的树的度为 3。 四、树的深度(高度)树是分层次的。结点所在的层次是从根算起的。根结点在第一层,根的后件在第二层,其余各层依次类推。即若某个结点在第 k 层,则该结点的后件均处在第 k+1 层。图(b)中的树共有五层。在树中

35、,父结点在同一层的所有结点构成兄弟关系。树中最大的层次称为树的深度,亦称高度。图(b)中树的深度为 5。 五、森林所谓森林,是指若干棵互不相交的树的集合。如图(b)去掉根结点 r,其原来的三棵子树 Ta,Tb,Tc 的集合Ta,Tb,Tc就为森林,这三棵子树的具体形态如图(c)。 六、有序树和无序树按照树中同层结点是否保持有序性,可将树分为有序树和无序树。如果树中同层结点从左而右排列,其次序不容互换,这样的树称为有序树;如果同层结点的次序任意,这样的树称为无序树。第二节 树的表示方法和存储结构一、树的表示方法树的表示方法一般有两种: 自然界的树形表示法:用结点和边表示树,例如下图采用的就是自然

36、界的树形表示法。树形表示法一般用于分析问题。 括号表示法:先将根结点放入一对圆括号中,然后把它的子树按由左而右的顺序放入括号中,而对子树也采用同样方法处理:同层子树与它的根结点用圆括号括起来,同层子树之间用逗号隔开,最后用闭括号括起来。例如下图(b)可写成如下形式 第 21 页 共 33 页(r(a(w,x(d(h),e),b(f),c(s,t(i(m,o,n),j),u) 二、树的存储结构 树的存储结构一般有两种1.静态的记录数组所有结点存储在一个数组中,数组元素为记录类型,包括数据域和长度为 n(n 为树的度)的数组,分别存储该结点的每一个儿子的下标。 Const n=树的度;max=结点

37、数的上限;Type node=record data:; 数据域sch:array1n of integer;指向各儿子的下标end;treetype=array1maxof node; Vartree:treetype;该图用静态数组方法保存如右表下标 数据域treei.data 儿子的下标序列 treei.ch1 r 2 3 42 a 5 6 03 b 7 0 04 c 8 9 105 w 0 0 06 x 11 12 07 f 0 0 08 s 0 0 09 t 13 14 010 u 0 0 011 d 15 0 012 e 0 0 0第 22 页 共 33 页13 i 16 17 1

38、814 j 0 0 015 h 0 0 016 m 0 0 017 o 0 0 018 n 0 0 02.动态的多重链表由于树中结点可以有多个元素,所以可以用多重链表来描述比较方便。所谓多重链表,就是每个结点由数据域和 n(n 为树的度)个指针域共 n+1 个域组成,其表示方法如下:Const n=树的度;Type treetype=node; node=recorddata:datatype;数据域next:array1n of treetype;指向各儿子的指针域end;Varroot:treetype; 上图用多重链表表示如下:第三节 二叉树的概念一、二叉树的递归定义和基本形态1.二叉树

39、是一种很重要的非线性数据结构,它的特点是每个结点最多有两个后继,且其子树有左右之分(次序不能任意颠倒)。 2.二叉树是以结点为元素的有限集,它或者为空,或者满足以下条件:第 23 页 共 33 页 有一个特定的结点称为根; 余下的结点分为互不相交的子集 L 和 R,其中 L 是根的左子树;R 是根的右子树;L 和 R 又是二叉树;由上述定义可以看出,二叉树和树是两个不同的概念: 树的每一个结点可以有任意多个后继,而二叉树中每个结点的后继不能超过2; 树的子树可以不分次序(除有序树外);而二叉树的子树有左右之分。我们称二叉树中结点的左后继为左儿子,右后继为右儿子。 3.二叉树的五种基本形态 二、

40、二叉树的两个特殊形态1.满二叉树:如果一棵二叉树的任何结点,或者是树叶,或者恰有两棵非空子树,则此二叉树称作满二叉树。(例如下图(a))可以验证具有 n 个叶结点的满二叉树共有2n-1 个结点。 2.完全二叉树:如果一棵二叉树最多只有最下面两层结点度数可以小于 2,并且最下面一层的结点都集中在该层最左边的若干位置上,则称此二叉树为完全二叉树(例如下图(b)) 三、二叉树的三个主要性质性质 1:在二叉树的第 i(1)层上,最多有 2 i-1个结点。 性质 2:在深度为 k(k1)的二叉树中最多有 2k-1 个结点。 性质 3:在任何二叉树中,叶子结点数总比度为 2 的结点多 1。 二叉树的性质(

41、1) 在二叉树中,第 i 层的结点总数不超过 2(i-1);(2) 深度为 h 的二叉树最多有 2h-1 个结点(h=1),最少有 h 个结点;(3) 对于任意一棵二叉树,如果其叶结点数为 N0,而度数为 2 的结点总数为 N2,则 N0=N2+1;(4) 具有 n 个结点的完全二叉树的深度为 int(log2n)+1 (5)有 N 个结点的完全二叉树各结点如果用顺序方式存储,则结点之间有如下关系:第 24 页 共 33 页若 I 为结点编号则 如果 I0 then begin访问处理 treei.data;preorder(treei.lch);递归遍历左子树preorder(treei.r

42、ch);递归遍历右子树end;end;链式结构:Procedue preorder(bt:bitreptr);beginif bt0 then begininorder(treei.lch);递归遍历左子树访问处理 treei.data;inorder(treei.rch);递归遍历右子树end;end;链式结构:Procedue inorder(bt:bitreptr);beginif bt0 then beginpostorder(treei.lch);递归遍历左子树postorder(treei.rch);递归遍历右子树访问处理 treei.data;end;end;链式结构:Proce

43、due postorder(bt:bitreptr);beginif bt1,说明左子树存在,位于 sk左侧的子串 s1sk-1为左子树中序遍历的结果,后序遍历中的前缀 s1sk-1为左子树后序遍历的结果;若 k1 若左子树存在,则递归遍历左子树then solve1(copy(s1,1,k-1),copy(s2,1,k-1);if k1 若左子树存在,则递归遍历左子树then solve2(copy(s1,1,k-1),copy(s2,2,k-1);if k0 then p:=bplelse begin bpl:=i;break;endelse 若 aibpdata 时顺右指针方向寻找顶点 i 的插入位置if bpr0then p:=bprelse begin bpr:=i; break; end;end;while

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 专业基础教材

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报