数据结构期末复习重点知识点总结

合集下载

大一计算机期末知识点总结

大一计算机期末知识点总结

大一计算机期末知识点总结计算机科学与技术是一门涉及如何构建计算机软硬件系统以及应用计算机解决问题的学科。

大一学习计算机的课程,主要包括计算机基础知识、编程语言、数据结构和算法等内容。

下面将对大一计算机期末考试的知识点进行总结。

一、计算机基础知识1. 计算机的组成和工作原理计算机由硬件和软件两部分组成。

硬件包括中央处理器(CPU)、内存、输入输出设备等,软件包括操作系统、应用程序等。

计算机的工作原理是通过执行指令来进行数据处理和存储。

2. 计算机的数据表示计算机内部使用二进制来表示数据。

常见的数据表示方式有整数表示、浮点数表示和字符表示。

3. 计算机网络基础计算机网络是计算机之间相互连接的网络系统,包括局域网、广域网和互联网等。

网络通信的基本原理、协议和常用网络设备等是大一学习的重点。

二、编程语言1. C语言基础C语言是一种通用的高级编程语言,广泛应用于系统软件开发和嵌入式系统等领域。

C语言的语法、数据类型、运算符、控制结构和函数等是大一学习的核心内容。

2. Python语言基础Python是一种简单易学的高级编程语言,用于快速开发各种应用程序。

大一学习Python语言主要包括语法、变量、数据类型、循环和函数等方面的内容。

三、数据结构1. 数组和链表数组是一种线性数据结构,用于存储同类型数据的集合。

链表是一种常用的动态数据结构,通过节点之间的指针连接来表示数据的存储结构。

2. 栈和队列栈是一种后进先出(LIFO)的数据结构,主要包括入栈和出栈操作。

队列是一种先进先出(FIFO)的数据结构,主要包括入队和出队操作。

3. 树和图树和图是非线性的数据结构。

树是一种具有层次结构的数据结构,常见的有二叉树和二叉搜索树。

图是由节点和边构成的一种复杂数据结构,常用于描述各种实际问题。

四、算法1. 排序算法排序算法是将一组数据按照特定的顺序进行排列的算法。

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

大一计算机期末知识点

大一计算机期末知识点

大一计算机期末知识点计算机科学与技术是当今社会中一门非常重要的学科,大一计算机课程作为学生们接触计算机领域的第一门课程,是打下扎实基础的关键。

期末考试作为该课程的重要组成部分,考察学生对于计算机基础知识的掌握情况。

下面将对大一计算机期末考试的知识点进行整理和总结,以供大家参考。

一、计算机基础知识1. 计算机的基本组成和工作原理- 计算机硬件的组成:中央处理器(CPU)、主存储器、输入设备、输出设备等。

- 计算机的工作原理:输入数据,经过CPU的运算处理,最终输出结果。

2. 计算机网络- 计算机网络基本概念:包括局域网、广域网、Internet等。

- 网络通信协议:TCP/IP协议、HTTP协议等。

3. 操作系统- 操作系统的作用和功能:资源管理、任务调度、文件管理等。

- 常见操作系统:Windows、Linux、macOS等。

二、编程语言与算法1. C语言基础- C语言的数据类型和变量:整型、浮点型、字符型等。

- C语言的控制结构:顺序结构、选择结构、循环结构等。

- C语言的数组和指针:一维数组、二维数组、指针的基本概念和使用方法。

2. 算法与数据结构- 常见数据结构:线性表、栈、队列、链表、树等。

- 常见算法:排序算法、查找算法、递归算法等。

三、数据库1. 数据库基础- 数据库的基本概念:数据、数据库、表、字段、记录等。

- 常见数据库管理系统:MySQL、Oracle、SQL Server等。

2. SQL语言- SQL语言的基本语法:SELECT、INSERT、UPDATE、DELETE等常用语句。

- SQL语句的组合和嵌套:多表查询、子查询等。

四、计算机安全1. 网络安全- 常见网络攻击与防范:入侵攻击、拒绝服务攻击、防火墙等。

- 加密与解密技术:对称加密、非对称加密、数字证书等。

2. 数据安全- 数据备份和恢复:定期备份、冷备份、热备份等。

- 数据安全管理:访问控制、身份认证、密码策略等。

大一计算机期末必考知识点

大一计算机期末必考知识点

大一计算机期末必考知识点计算机科学与技术是现代社会中一门重要的学科,无论是在学术研究还是实际应用中都扮演着重要的角色。

作为大一计算机专业学生,期末考试是对我们学习成果的一次总结和检验,因此了解并掌握大一计算机期末必考的知识点是非常重要的。

本文将以思维导图的形式,综合整理大一计算机期末必考的知识点,帮助同学们更好地复习备考。

一、计算机组成原理1. 计算机的基本组成部分- 输入设备- 中央处理器- 存储器- 输出设备2. 冯·诺伊曼体系结构- 存储程序控制- 运算器和控制器的结构和功能- 存储器和输入输出设备的连接3. 指令的执行过程- 取指- 译码- 执行- 访存二、数据结构与算法1. 线性表- 数组- 链表- 栈和队列2. 树和二叉树- 二叉树的遍历- 二叉树的建立与查找3. 图- 图的遍历和搜索- 最短路径算法- 最小生成树算法4. 排序与查找算法- 冒泡排序- 快速排序- 二分查找三、操作系统1. 进程与线程- 进程的概念与调度- 线程与多线程并发2. 内存管理- 内存地址空间与地址映射 - 虚拟内存与页面置换算法3. 文件系统- 文件的组织与访问- 文件系统的目录结构四、数据库系统1. 数据库基础知识- 数据库的概念与分类- 数据模型与关系模型2. SQL语言- SQL的基本语法和查询操作 - SQL的连接查询和排序操作3. 数据库设计与规范化- 数据库设计的范式与规则 - 数据库的关系模式设计五、网络与通信1. 计算机网络- 网络的分类与拓扑结构- OSI参考模型- TCP/IP协议族2. 网络通信- 网络通信的基本概念- 网络通信的协议与传输方式 - 网络安全与密码技术六、编程语言1. C语言- 基本语法和数据类型- 流程控制和函数- 指针与数组2. Java语言- 类和对象- 继承与接口- 异常处理和多线程编程七、软件工程1. 软件生命周期与模型- 瀑布模型- 迭代模型- 敏捷开发模型2. 需求分析与设计- 需求获取和分析- UML图的绘制3. 软件测试与维护- 软件测试的方法和策略- 软件维护的类型和过程以上就是大一计算机期末必考的知识点,希望同学们能够认真复习,掌握这些重要的内容。

数据结构二叉树知识点总结

数据结构二叉树知识点总结

数据结构⼆叉树知识点总结术语1. 节点的度:⼀个节点含有的⼦树的个数称为该节点的度;2. 叶节点或终端节点:度为零的节点;3. ⾮终端节点或分⽀节点:度不为零的节点;4. ⽗亲节点或⽗节点:若⼀个节点含有⼦节点,则这个节点称为其⼦节点的⽗节点;5. 兄弟节点:具有相同⽗节点的节点互称为兄弟节点;6. 节点的层次:从根开始定义起,根为第1层,根的⼦节点为第2层,以此类推;7. 树的⾼度或深度:树中节点的最⼤层次;8. 堂兄弟节点:⽗节点在同⼀层的节点互为堂兄弟;9. 节点的祖先:从根到该节点所经分⽀上的所有节点;10. 孙:以某节点为根的⼦树中任⼀节点都称为该节点的⼦孙。

11. 森林:由m(m>=0)棵互不相交的树的集合称为森林;12. 满⼆叉树:⼀棵深度为k,且有2^k-1 (2的k次⽅减⼀)个节点称之为满⼆叉树13. 完全⼆叉树:完全⼆叉树是由满⼆叉树⽽引出来的。

对于深度为K的,有n个结点的⼆叉树,当且仅当其每⼀个结点都与深度为K的满⼆叉树中编号从1⾄n的结点⼀⼀对应时称之为完全⼆叉树。

叶节点只能出现在最下层和次下层,并且最下⾯⼀层的结点都集中在该层最左边的若⼲位置的⼆叉树⼆叉树的性质1.在⾮空⼆叉树中,第i层的结点总数不超过2^(i-1),i>=1;2.深度为h的⼆叉树最多有2^h-1个结点(h>=1),最少有h个结点;3.对于任意⼀棵⼆叉树,如果其叶结点数为N0,⽽度数为2的结点总数为N2,则N0=N2+1;4.具有n个结点的完全⼆叉树的深度为K =[log2n」+1(取下整数)5.有N个结点的完全⼆叉树各结点如果⽤顺序⽅式存储,则结点之间有如下关系:若I为结点编号则如果I>1,则其⽗结点的编号为I/2;6.完全⼆叉树,如果2*I<=N,则其左⼉⼦(即左⼦树的根结点)的编号为2*I;若2*I>N,则⽆左⼉⼦;如果2*I+1<=N,则其右⼉⼦的结点编号为2*I+1;若2*I+1>N,则⽆右⼉⼦。

计算机数据结构知识点梳理 哈夫曼(Huffman)树和哈夫曼编码

计算机数据结构知识点梳理		哈夫曼(Huffman)树和哈夫曼编码
(2)在F中选取根结点的权值最小和次小的两棵二叉树作为左、右子树构造一 棵新的二叉树,这棵新的二叉树根结点的权值为其左、右子树根结点权值之 和;
(3)在集合F中删除作为左、右子树的两棵二叉树,并将新建立的二叉树加入 到集合F中;
(4)重复(2)(3)两步,当F中只剩下一棵二叉树时,这棵二叉树便是所要 建立的哈夫曼树。
(3)深度为h的哈夫曼树,其叶子结点的最大编码长度为h-1。
[题1]若度为m的哈夫曼树,其叶子结点个数为n,则非叶子结点 的个数为( )。
A.n-1 B.[n/m]-1 C.[(n-1)/(m-1)] D.[n/(m-1)]-1
分析:在构造度为m的哈夫曼树过程中,每次把m个子结点合并 为一个父结点(第一次合并可能少于m个子结点),每次合并 减少m-1个结点,从n个叶子结点减少到最后只剩一个父结点共 需[(n-1)/(m-1)]次合并,每次合并增加一个非叶子结点。
5、对哈夫曼树编码的总结
(1)哈夫曼编码是能使电文代码总长最短的编码方式。此结论由哈夫曼树是带 权路径长度最小的树的特征可得。
(2)哈夫曼编码是一种前缀编码,保证其在译码时不会产生歧义。因为,在哈 夫曼编码中,每个字符都是叶子结点,而叶子结点不可能从根结点到其他叶 子结点的路径上,所以一个字符的哈夫曼编码不可能是另一个字符的哈夫曼 编码的前缀。
知识点10:哈夫曼(HUFFMAN)树和哈夫曼编码
1、哈夫曼树(又称最优二叉树),是指对于一 组带有确定权值的叶结点,构造的具有最小带
权路径长度的二叉树。
2、哈夫曼树的构造方法的基本思想
(1)由给定的n个权值{W1,W2,…,Wn}构造n棵只有一个叶结点的二叉树, 从而得到一个二叉树的集合F={T1,T2,…,Tn};

《数据结构之图》相关知识点总结

《数据结构之图》相关知识点总结

第5章图●图的定义①图由顶点集V和边集E组成,记为G=(V,E),V(G)是图G中顶点的有穷非空集合,E(G)是图G中顶点之间变得关系集合,|V|表示顶点个数,也称图的阶,|E|表示边数(线性表和树都可以是空的,但图可以只有一个顶点没有边)②有向图:弧是顶点的有序对,记为<v,w>,v,w是顶点,v是弧尾,w是弧头,从顶点v到顶点w的弧。

无向图:边是顶点的无序对,记为(v,w)③简单图:一个图满足:不存在重复边;不存在顶点到自身的边。

多重图相对于简单图定义④完全图:无向图中,任意两顶点之间存在边,称为完全无向图。

N个顶点的无向完全图有n(n-1)/2条边。

在有向图中,任意两顶点之间存在方向相反的两条弧,称为有向完全图,N 个顶点的有向完全图有n(n-1)条边。

⑤连通图:在无向图中任意两顶点都是连通的。

无向图中的极大连通子图称为连通分量。

极大要求连通子图包含其所有的边和顶点,极小连通子图既要保持图连通,又要保持边数最少⑥在有向图中任意两顶点v,w,存在从顶点v到顶点w和从顶点w到顶点v两条路径,这种图称为强连通图。

有向图的极大强连通子图称为有向图的强连通分量。

⑦生成树:①包含图中所有顶点n,②生成树有n-1条边, ③任意两点连通。

对生成树而言,砍去一条边变成非连通图,加上一条边形成一个回路。

在非连通图中,连通分量的生成树构成了非连通图的生成森林。

⑧顶点的度:以该顶点为端点的边的数目。

无向图的全部顶点的度之和等于边数的两倍。

有向图的度等于出度和入度之和,入度是以该顶点为终点的有向边的数目,出度是以该顶点为起点的有向边的数目。

有向图的全部顶点的入度之和和出度之和相等且等于边数。

⑨图中每条边可以标上具有某种含义的数值,该数值称为边的权值。

带有权值的图称为网。

○10对于无向图G=(V, {E}),如果边(v,v’)∈E,则称顶点v,v’互为邻接点,即v,v’相邻接。

边(v,v’)依附于顶点v 和v’,或者说边(v, v’)与顶点v 和v’相关联。

数据结构复习--排序和查找

数据结构复习--排序和查找

数据结构复习--排序和查找现在正在学习查找和排序,为了节省时间提⾼效率,就正好边学习边整理知识点吧!知识点⼀:⼆分查找/折半查找1.⼆分查找的判定树(选择题)下列⼆叉树中,可能成为折半查找判定树(不含外部结点)的是: (4分)1.2.3.4.注:折半查找判定树是⼀棵⼆叉排序树,它的中序遍历结果是⼀个升序序列,可以在选项中的树上依次填上相应的元素。

虽然折半查找可以上取整也可以下取整但是⼀个查找判定树只能有⼀种取整⽅式。

如果升序序列是偶数个,那么终点应该偏左多右少。

在2选项中,由根节点左⼦树4个节点⽽右⼦树5个节点可以确定⽤的是向下取整策略,但是它的左⼦节点在左⼦树种对应的终点左边2个,右边个,明显是上取整策略,策略没有统⼀,所以是错的。

其他的选项类似分析。

2.⼆分查找法/折半查找法已知⼀个长度为16的顺序表L,其元素按关键字有序排列。

若采⽤⼆分查找法查找⼀个L中不存在的元素,则关键字的⽐较次数最多是: (2分)1. 72. 63. 54. 4 注:⼀次找到最边界的那⼀个树的情况下有最多次数 这个题中结点数16是个偶数:第⼀次(0+15)/2 7 第⼆次(8+15)/2 11第三次(12+15)/2 14 第四次(14+15)/2 14 第五次(15+15)/2 15(下取整的就向右计算求最多次数)第⼀次(0+15)/2 8 第⼆次(0+7)/2 4 第三次(0+3)/2 2 第四次(0+1)/2 0第五次(0+0)/2 0(下取整的话就向左求最多次数)若结点数是奇数15:第⼀次(0+14)/2 7 第⼆次( 0+6)/2 3 第三次(0+2)/2 1第四次(0+0)/2 0第⼀次(0+14)/2 7 第⼆次(8+14)/2 11 第三次(12+14)/2 13第四次(14+14)/2 0这时候向左或者向右都是OK的(因为得到的数都是能够被2整除的)但是划重点了折半查找⼀个有序表中不存在的元素,若向下取整,则要最多⽐较[log2n]+1次,若向上取整,则要最多⽐较[log2(n+1)],其实就是求树的深度.(这⼀块⾃⼰的说法可能不够准确,希望⼤家看到有问题的可以指出来)结合实际,我们⽤[log2n]+1来算更简单并且计算[log2n]要取整数,因为可能会存在不是满⼆叉树的情况。

数据结构树和二叉树知识点总结

数据结构树和二叉树知识点总结

数据结构树和二叉树知识点总结
1.树的概念:树是一种非线性的数据结构,由节点和边构成,每个节点只能有一个父节点,但可以有多个子节点。

2. 二叉树的概念:二叉树是一种特殊的树结构,每个节点最多只有两个子节点,一个是左子节点,一个是右子节点。

3. 二叉树的遍历:二叉树的遍历分为前序遍历、中序遍历和后序遍历三种方式。

前序遍历是先访问根节点,再访问左子树,最后访问右子树;中序遍历是先访问左子树,再访问根节点,最后访问右子树;后序遍历是先访问左子树,再访问右子树,最后访问根节点。

4. 二叉搜索树:二叉搜索树是一种特殊的二叉树,它满足左子树中所有节点的值均小于根节点的值,右子树中所有节点的值均大于根节点的值。

因此,二叉搜索树的中序遍历是一个有序序列。

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

平衡二叉树的插入和删除操作可以保证树的平衡性,从而提高树的查询效率。

6. 堆:堆是一种特殊的树结构,它分为最大堆和最小堆两种。

最大堆的每个节点的值都大于等于其子节点的值,最小堆的每个节点的值都小于等于其子节点的值。

堆常用于排序和优先队列。

7. Trie树:Trie树是一种特殊的树结构,它用于字符串的匹配和检索。

Trie树的每个节点代表一个字符串的前缀,从根节点到叶子节点的路径组成一个完整的字符串。

以上是数据结构树和二叉树的一些基本知识点总结,对于深入学
习数据结构和算法有很大的帮助。

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

第一章绪论一、数据结构包括:逻辑结构、存储结构、运算(操作)三方面内容。

二、线性结构特点是一对一。

树特点是一对多图特点是多对多三、数据结构的四种存储结构:顺序存储、链式存储、索引存储、散列存储顺序存储结构和链式存储结构的区别?线性结构的顺序存储结构是一种随机存取的存储结构。

线性结构的链式存储是一种顺序存取的存储结构。

逻辑结构分类:集合线性树图,各自的特点。

或者分为线性结构和非线性结构。

四、算法的特征P13五、时间复杂度(1) i=1; k=0;while(i<n){ k=k+10*i;i++;}分析:i=1; //1k=0; //1while(i<n) //n{ k=k+10*i; //n-1i++; //n-1}由以上列出的各语句的频度,可得该程序段的时间消耗:T(n)=1+1+n+(n-1)+(n-1)=3n可表示为T(n)=O(n)六、数据项和数据元素的概念。

第二章线性表一、线性表有两种存储结构:顺序存储和链式存储,各自的优、缺点。

二、线性表的特点。

三、顺序表的插入、思想、时间复杂度o(n)、理解算法中每条语句的含义。

(1)插入的条件:不管是静态实现还是动态实现,插入的过程都是从最后一个元素往后挪动,腾位置。

静态是利用数组实现,动态是利用指针实现。

不管静态还是动态,在表中第i个位置插入,移动次数都是n-i+1。

四、顺序表的删除、思想、时间复杂度o(n)、理解算法中每条语句的含义。

(1)删除的条件:不管是静态实现还是动态实现,删除的过程都是从被删元素的下一位置向前挪动。

静态是利用数组实现,动态是利用指针实现。

不管静态还是动态,删除表中第i个元素,移动次数都是n-i。

五、顺序表的优缺点?为什么要引入链表?答:顺序表的优点是可以随机存取,缺点是前提必须开辟连续的存储空间且在第一位置做插入和删除操作时,数据的移动量特别大。

如果有一个作业是100k,但是内存最大的连续存储空间是99K,那么这个作业就不能采用顺序存储方式,必须采用链式存储方式。

六、顺序表和链表合并七、带头结点不为空的单链表的条件是什么?L->next!=NULL;带头结点为空的条件是什么?L->next==NULL;不带头结点不为空的单链表的条件是什么?L!=NULL;不带头结点为空的单链表的条件是什么?L==NULL;带头结点的双循环链表为空的条件是?L->next==L->prior==L 头指针、头结点、首元结点(第一个结点)的概念八、单链表中插入、删除相关操作。

九、双链表的插入和删除。

第三章栈和队列一、栈和队列的特点、相同点和不同点。

举例说明其不同点。

栈的特点:先进后出或后进先出。

队列特点:先进先出。

栈和队列的相同点是只允许在端点处插入和删除元素不同点:二、循环队列的相关操作。

1、置空队列Void initqueue(cirqueue *q){ q->front=q->rear=0;q->count=0;}2、判空int queue empty ( cirqueue *q ){ if (q -> count = = 0 ) return (1) ;else return (0);}3、判队满int queuefull(cirqueue *q){retuen q->count=maxsize;}4、入队void enqueue (cirqueue * q,datatype x ){ if (q->count = = m) //判队满{ printf(“over flow “) ; exit(0);}q -> data [ q -> rear ] = x ;q -> rear = ( q -> rear + 1 )% M ;q -> count ++ ;}5、出队datatype dequeue ( cirqueue * q ){ if ( q -> count = = 0 ) //判队空{ printf ( “ queue null “ ) ; exit (0) ; }Temp=q -> data [ q -> font]q -> count -- ;q -> front = (q -> front + 1 ) %m ; //删除队头元素 }6、取队头元素datatype getqueue (cirqueue *q){if ( q -> count = = 0 ){ printf ( “ queue null “ ) ; exit (0) ; }return q -> data [ q -> font];}三、理解顺序表、顺序栈、顺序队的区别?顺序表:可以在任意合法的位置上做插入和删除。

顺序栈:只可以在顺序表的同一端上做插入和删除。

顺序队:在顺序表的一端做插入,另一端做删除。

理解链表、链栈、链队的区别?链表:可以在任意合法的位置上做插入和删除。

链栈:只可以在链表的首结点位置做插入和删除。

链队:在链表的首结点位置做删除,尾结点后做插入。

四、(题)若用一个大小为6的数组来实现循环队列,且当前的rear和front的值分别为2和5,当从队列中删除一个元素,再插入两个元素后,rear和front的值分别为__2__、__4__。

五、(题)设环形队列数组的下标是0~N-1,其头尾指针分别为f 和r,则其元素个数为:(r-f+N)%N第五章数组一、数组不能做插入和删除,只能做取值和赋值操作。

二、数组只能采取顺序存储(行优先和列优先)三、数组行优先计算公式(下标从0和1开始)(假设每个数据元素占L个存储单元,则数组A中任一元素aij 的存储位置为:)LOC(aij)=LOC(a11)+[(i-1)*n+j-1 ]*LLOC(aij)=LOC(a00)+[i*n+j]*L数组列优先计算公式(下标从0和1开始)LOC(aij)=LOC(a11)+[(j-1)*m+i-1 ]*LLOC(aij)=LOC(a00)+[j*m+i]*L四、为什么要对特殊矩阵进行压缩存储?答:主要为了节省存储空间。

五、对称矩阵和三角矩阵各长什么样?(对称矩阵以对角线是对称的三角矩阵是非零数组成三角形)六、对称矩阵的压缩存储所需存储空间至少n(n+1)/2。

三角矩阵的压缩存储所需存储空间至少n(n+1)/2+1。

七、对称矩阵的压缩存储可以存其下三角上的元素公式八、(题)广义表取表头和取表尾第六章树一、(二叉树)树的四个性质性质1:二叉树的第i层上至多有2 i-1(i 1)个结点。

性质2:深度为k的二叉树中至多2k-1个结点。

性质3:对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1。

性质4:具有n个结点的完全二叉树的深度k为└log2n┘+1。

二、满二叉树和完全二叉树的区别是什么?满二叉树一定是完全二叉树,但是完全二叉树不一定是满二叉树。

深度为k的二叉树,最少有k个结点,最多有2k-1深度为k的完全二叉树,最少有2k-1-1+1个结点,最多有2k-1三、二叉树的遍历?(128页)四、树.森林和二叉树的相互转换(138页)五、树、森林的遍历(138页)六、赫夫曼树(又称最优二叉树或哈夫曼树)、赫夫曼树编码1. 赫夫曼树中,权越大的叶子离根越近,其形态不唯一,但是WPL带权路径长度一定是最小。

2.一定要会构造赫夫曼树,在构造好的赫夫曼树上会构造赫夫曼编码。

(认真看题目要求)(146页)七、递归算法设计题1.已知二叉树中的结点类型用BiTNode表示,被定义描述为:Typedef struct BiTNode {TElemType data ;struct BiTNode * LChild , *RChild;} BiTNode,*BiTree;其中data为结点值域,LChild和RChild分别为指向左、右孩子结点的指针域,编写出求一棵二叉树高度的算法。

Int BTreeHeight(BiTree BT){if (BT==NULL) return 0;else {h1=BTreeHeight(BT->LChild);h2=BTreeHeight(BT->RChild);if (h1>h2) return(h1+1);else return( h2+1);}}2.已知二叉树中的结点类型用BiTNode表示,被定义描述为:Typedef struct BiTNode {TElemType data ;struct BiTNode * LChild , *Rchild;} BiTNode,*BiTree;BiTree T;其中data为结点值域,LChild和RChild分别为指向左、右孩子结点的指针域,编写算法,求出二叉树中2度结点个数。

int degree2nodenum(BiTree T){if (T){if(T->lchild!=NULL &&T->child!=NULL)count++;leafnodenum(l->lchild);leafnodenum(l->rchild);}return count;}3.已知二叉树中的结点类型用BiTNode表示,被定义描述为:Typedef struct BiTNode {TElemType data ;struct BiTNode * LChild , *RChild;} BiTNode,*BiTree;BiTree T;其中data为结点值域,LChild和RChild分别为指向左、右孩子结点的指针域,写一算法,求出二叉树中的叶子结点个数。

void BTreeLeaf (BiTree BT){if(BT){if(BT-> LChild==NULL && BT->RChild==NULL) count++;BTreeLeaf (BT->LChild); // 访问左子树BTreeLeaf (BT->RChild); // 访问右子树}}或下面算法均可编写递归算法,计算二叉树中叶子结点的数目。

int LeafCount_BiTree(Bitree T)//求二叉树中叶子结点的数目{if(!T) return 0; //空树没有叶子else if(!T->lchild&&!T->rchild) return 1; //叶子结点else return Leaf_Count(T->lchild)+Leaf_Count(T->rchild);//左子树的叶子数加上右子树的叶子数}//LeafCount_BiTree4.PPT上的三种遍历递归算法和课本上P131先序递归创建二叉链表。

相关文档
最新文档