第4课 树和二叉树
- 格式:doc
- 大小:213.00 KB
- 文档页数:14
湖北省高等教育自学考试实践(技能)课程大纲课程名称:数据结构(实践)课程代码:04734一、实践能力的培养目标。
数据结构(实践)课程是使考生在学会分析研究计算机加工的数据结构的特性,为应用涉及的数据选择适当的逻辑结构、存储结构及相应的算法的基础上,通过对本课程算法设计和上机实践的训练,培养学生的数据抽象能力和程序设计的能力,来解决各种实际问题。
二、实践(技能)课程教学基本要求。
(含学时、学分要求)数据结构(实践)课程共2学分,建议安排学习时数为48学时。
重点实验章节有2章,具体内容如下:1)第7章排序24学时2)第8章查找12学时3)其他章节12学时三、实践(技能)课程教学参考教材《数据结构》苏仕华外语教学与研究出版社2012年四、实践(技能)考核的场所、设备、师资要求。
实践考核场所:要求提供最少10人/组独立计算机平台计算机软硬件要求:计算机及相关的输入/输出设备;操作系统:Windows XP / Windows 7/ Windows 10C/C++语言编译器师资要求:计算机科学与技术专业相关教师(工程师)五、实践(技能)考核的项目名称、考核目标、考核内容、考核方法。
1)线性表利用顺序表和链表设计算法解决应用问题2)栈和队列栈和队列的应用3)树和二叉树二叉树的运算4)排序直接插入排序算法和希尔排序算法的基本思想及算法实现,及性能分析交换排序,选择排序,归并排序算法的基本思想及算法实现,及各种内部排序算法分析比较5)查找顺序表查找和树表查找的基本思想及算法实现六、实践(技能)考核评分标准。
主要根据上机结果及完成时间,进行评分:规定时间内正确完成上机操作满分;未完成者,则由考核教师依据完成步骤进行打分。
附模拟题:题目:编写一个程序对一维数组排序。
要求:1)使用冒泡法;2)使用选择排序法。
数据结构的课程设计一、课程目标知识目标:1. 理解数据结构的基本概念,掌握线性表、树、图等常见数据结构的特点与应用场景。
2. 学会分析不同数据结构的存储方式和操作方法,并能运用到实际问题的解决中。
3. 掌握排序和查找算法的基本原理,了解其时间复杂度和空间复杂度。
技能目标:1. 能够运用所学数据结构知识,解决实际问题,提高编程能力。
2. 能够运用排序和查找算法,优化程序性能,提高解决问题的效率。
3. 能够运用数据结构知识,分析并解决复杂问题,培养逻辑思维能力和创新意识。
情感态度价值观目标:1. 培养学生对数据结构学科的兴趣,激发学习热情,形成主动探索和积极进取的学习态度。
2. 增强学生的团队协作意识,培养合作解决问题的能力,提高沟通表达能力。
3. 培养学生的抽象思维能力,使其认识到数据结构在计算机科学中的重要性,激发对计算机科学的热爱。
本课程针对高中年级学生,结合学科特点和教学要求,注重理论与实践相结合,培养学生的编程能力和逻辑思维能力。
通过本课程的学习,使学生能够掌握数据结构的基本知识,提高解决实际问题的能力,同时培养良好的学习态度和价值观。
在教学过程中,将目标分解为具体的学习成果,以便进行后续的教学设计和评估。
二、教学内容1. 数据结构基本概念:介绍数据结构的概念、作用和分类,重点讲解线性结构(线性表、栈、队列)和非线性结构(树、图)的特点。
2. 线性表:讲解线性表的顺序存储和链式存储结构,以及相关操作(插入、删除、查找等)。
3. 栈和队列:介绍栈和队列的应用场景、存储结构及相关操作。
4. 树和二叉树:讲解树的定义、性质、存储结构,二叉树的遍历算法及线索二叉树。
5. 图:介绍图的定义、存储结构(邻接矩阵和邻接表)、图的遍历算法(深度优先搜索和广度优先搜索)。
6. 排序算法:讲解常见排序算法(冒泡排序、选择排序、插入排序、快速排序等)的原理、实现及性能分析。
7. 查找算法:介绍线性查找、二分查找等查找算法的原理及实现。
数据结构课程标准课程目标1:理解线性表、栈和队列、串、树和二叉树和图的逻辑结构,掌握在各种逻辑结构上的各种基本操作的实现,培养学生进行复杂程序设计的能力和数据抽象的能力。
课程目标2:熟练掌握常用的静态查找和动态查找算法,深刻理解排序的定义和各种排序方法的特点,并能加以灵活应用。
课程目标3:能够从时间和空间复杂性的角度综合比较各种算法的复杂度,并能分析顺序存储和链式存储两种常用存储结构的不同特点及适用场合。
三、课程目标与毕业要求的关系1、课程目标与毕业要求的对应关系课程目标2课程目标3注:H表示高支撑,M表示中支撑,1表示低支撑。
参考《数学学院课程目标达成度评价方法》进行评价。
九、本课程各个课程目标的权重依据第八部分中的课程目标达成度评价方法,计算得到本课程的各个课程目标的权重如下:根据学生的课堂表现、作业、平时测验和期末考试情况及教学督导的反馈,检验学生对本课程涉及的学科素养和学会反思的达成情况,及时对教学中的不足之处进行改进,调整教学指导策略;根据学生的课堂表现、作业、平时测验及期末考试成绩,检验本课程所支撑的毕业要求分解指标点的达成度情况;根据本课程所支撑的毕业要求分解指标点的达成度情况,在本学院教学指导委员会指导下,重新修订本课程大纲,实现持续改进。
十一、推荐教材及参考书目1.教材1.孙丽云.数据结构(C语言版)[M].武汉:华中科技大学出版社,2017.2.参考书目2.孙丽云.数据结构实验指导与习题解析(C语言版)[M].北京:华中科技大学出版社,2017.3.严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,2012.4.高一凡,数据结构算法解析[M].北京:清华大学出版社,2015.。
《数据结构》课程教案一、引言数据结构是计算机科学中非常重要的一门课程,它涉及到对数据的组织、存储和访问方法的研究。
数据结构的学习能够帮助学生建立起对计算机中数据处理的基本概念和方法的理解,并培养学生分析和解决实际问题的能力。
本教案旨在为《数据结构》课程提供一套系统的教学计划,以确保学生能够全面掌握该学科的知识和技能。
二、教学目标本课程的主要教学目标如下:1. 掌握常见的数据结构,包括线性表、栈、队列、树、图等,并理解它们的基本概念与特点;2. 理解各种数据结构之间的联系与区别,能够根据问题需求选择合适的数据结构;3. 学习并掌握常用的数据结构算法,如查找、排序等;4. 培养学生分析和解决实际问题的能力,提高编程实践的能力;5. 增强学生的团队合作与沟通能力,通过小组项目实践提升学生能力。
三、教学内容与安排本课程的教学内容将按照以下顺序进行讲解和实践操作:第一章:绪论1. 数据结构的基本概念与作用;2. 学习数据结构的意义与价值;3. 课程的教学方法和学习要求。
第二章:线性表1. 线性表的定义与分类;2. 线性表的顺序存储结构与链式存储结构;3. 线性表的基本运算和实例分析。
第三章:栈与队列1. 栈的定义与基本操作;2. 栈的应用场景与实例分析;3. 队列的定义与基本操作;4. 队列的应用场景与实例分析。
第四章:树与二叉树1. 树的定义与基本术语;2. 二叉树的定义与性质;3. 二叉树的遍历方法与实例分析;4. 哈夫曼树的构建与应用。
第五章:图1. 图的定义与基本术语;2. 图的存储方式与基本操作;3. 图的遍历算法与实例分析;4. 最短路径算法与实例分析。
第六章:查找算法1. 顺序查找与二分查找;2. 哈希查找的原理与实现方法。
第七章:排序算法1. 冒泡排序与插入排序;2. 快速排序与归并排序;3. 堆排序与希尔排序。
第八章:课程总结与展望1. 对整个课程内容的回顾;2. 对数据结构的进一步学习与应用的展望;3. 学生反馈与教师建议。
数据结构课程设计python一、课程目标知识目标:1. 理解数据结构的基本概念,掌握常用数据结构如列表、元组、字典和集合的特点及应用场景。
2. 学习并掌握栈和队列的操作原理及其在Python中的实现方法。
3. 掌握树和图的基本概念,了解二叉树、遍历算法及图的表示方法。
技能目标:1. 能够运用Python语言实现基本数据结构,并对其进行增、删、改、查等操作。
2. 能够利用栈和队列解决实际问题,如递归、函数调用栈、任务调度等。
3. 能够运用树和图解决实际问题,如查找算法、路径规划等。
情感态度价值观目标:1. 培养学生严谨的逻辑思维,提高分析问题和解决问题的能力。
2. 激发学生对数据结构和算法的兴趣,培养良好的编程习惯。
3. 引导学生认识到数据结构在实际应用中的重要性,增强学习热情和责任感。
课程性质:本课程为高年级数据结构课程,旨在使学生掌握Python语言实现数据结构的方法,提高编程能力和解决问题的能力。
学生特点:学生具备一定的Python编程基础,具有较强的逻辑思维能力,对数据结构有一定的了解。
教学要求:结合实际案例,采用任务驱动法,引导学生通过实践掌握数据结构的基本原理和应用方法。
注重培养学生的动手能力和团队协作精神,提高学生的综合素质。
通过本课程的学习,使学生能够具备独立设计和实现小型项目的能力。
二、教学内容1. 数据结构基本概念:介绍数据结构的概念、作用和分类,结合Python语言特点,分析各类数据结构在实际应用中的优势。
- 列表、元组、字典和集合的原理与应用- 栈与队列的操作原理及实现2. 线性表:讲解线性表的概念,重点掌握顺序表和链表的操作方法。
- 顺序表和链表的实现及操作- 线性表的查找和排序算法3. 树与二叉树:介绍树的基本概念,重点讲解二叉树的结构及其遍历算法。
- 树的基本概念和表示方法- 二叉树的性质、存储结构、遍历方法4. 图:讲解图的基本概念,掌握图的存储结构及遍历方法。
- 图的基本概念和表示方法- 图的遍历算法(深度优先搜索、广度优先搜索)- 最短路径和最小生成树算法5. 算法分析与设计:结合实例,分析算法性能,掌握基本的算法设计方法。
杭电数据结构课程设计一、课程目标知识目标:1. 学生能理解数据结构的基本概念,掌握线性表、栈、队列、树、图等常见数据结构的特点与应用。
2. 学生能描述各类数据结构的存储方式和操作方法,了解其时间复杂度和空间复杂度。
3. 学生能运用所学的数据结构知识解决实际问题,如排序、查找、最短路径等。
技能目标:1. 学生能运用编程语言(如C++、Java等)实现常见数据结构及其相关算法。
2. 学生能分析实际问题的数据特征,选择合适的数据结构进行问题求解。
3. 学生能通过课程项目实践,培养团队协作、沟通表达、问题解决等综合能力。
情感态度价值观目标:1. 学生对数据结构产生兴趣,认识到数据结构在计算机科学与软件开发中的重要性。
2. 学生在解决实际问题的过程中,培养积极探究、勇于创新的精神。
3. 学生通过团队协作,学会尊重他人、分享经验,提高沟通能力。
课程性质:本课程为计算机科学与技术专业的核心课程,旨在培养学生掌握数据结构的基本知识、技能和素养。
学生特点:学生具备一定的编程基础和数学素养,具有较强的逻辑思维能力,但对数据结构的应用和实际操作能力有待提高。
教学要求:结合课程性质和学生特点,注重理论与实践相结合,强调动手实践和实际应用,提高学生的数据结构知识水平和问题解决能力。
通过课程目标分解,将知识、技能和情感态度价值观目标融入教学过程,为后续教学设计和评估提供依据。
二、教学内容1. 线性表:介绍线性表的定义、特点、存储结构(顺序存储、链式存储),以及线性表的相关操作(插入、删除、查找等)。
教材章节:第2章 线性表2. 栈与队列:讲解栈和队列的基本概念、存储结构及操作方法,分析其应用场景。
教材章节:第3章 栈与队列3. 树与二叉树:阐述树的基本概念、存储结构、遍历方法,重点讲解二叉树的性质、存储结构、遍历算法(前序、中序、后序)及二叉树的应用。
教材章节:第4章 树与二叉树4. 图:介绍图的定义、存储结构(邻接矩阵、邻接表),图的遍历算法(深度优先搜索、广度优先搜索),以及最短路径、最小生成树等算法。
数据结构c语言版耿国华课后习题答案数据结构是计算机科学中非常重要的一门课程,它涉及到了计算机程序设计中的数据组织、存储和操作等方面。
而耿国华教授的《数据结构c语言版》是这门课程中的经典教材之一,它通过讲解各种数据结构的原理和实现方法,帮助学生更好地理解和掌握这门课程的知识。
本文将针对《数据结构c语言版》中的一些典型习题进行解答,帮助读者更好地理解和掌握这些知识点。
1. 线性表线性表是数据结构中最基本的一种数据结构,它包含了顺序表和链表两种实现方式。
在习题中,我们需要实现线性表的基本操作,如插入、删除、查找等。
通过编写代码,我们可以更好地理解这些操作的实现原理和思路。
2. 栈和队列栈和队列是线性表的特殊形式,它们分别具有“先进后出”和“先进先出”的特点。
在习题中,我们需要实现栈和队列的基本操作,如入栈、出栈、入队、出队等。
通过编写代码,我们可以更好地理解这些操作的实现方法和应用场景。
3. 树和二叉树树是一种非线性的数据结构,它具有层次关系。
二叉树是树的一种特殊形式,它每个节点最多只有两个子节点。
在习题中,我们需要实现树和二叉树的基本操作,如创建、插入、删除、遍历等。
通过编写代码,我们可以更好地理解这些操作的实现原理和应用场景。
4. 图图是一种非线性的数据结构,它由节点和边组成。
在习题中,我们需要实现图的基本操作,如创建、插入、删除、遍历等。
通过编写代码,我们可以更好地理解这些操作的实现方法和应用场景。
5. 查找和排序查找和排序是数据结构中非常重要的一部分,它们在实际应用中具有广泛的应用。
在习题中,我们需要实现各种查找和排序算法,如顺序查找、二分查找、冒泡排序、快速排序等。
通过编写代码,我们可以更好地理解这些算法的实现原理和性能特点。
通过以上习题的解答,我们可以更好地理解和掌握《数据结构c语言版》中的知识点。
同时,通过编写代码,我们可以锻炼自己的编程能力和解决问题的能力。
希望读者能够通过习题的解答,更好地理解和应用数据结构这门课程的知识。
《数据结构》课程设计一、课程目标《数据结构》课程旨在帮助学生掌握计算机科学中基础的数据组织、管理和处理方法,培养其运用数据结构解决实际问题的能力。
课程目标如下:1. 知识目标:(1)理解基本数据结构的概念、原理和应用,如线性表、栈、队列、树、图等;(2)掌握常见算法的设计和分析方法,如排序、查找、递归、贪心、分治等;(3)了解数据结构在实际应用中的使用,如操作系统、数据库、编译器等。
2. 技能目标:(1)能够运用所学数据结构解决实际问题,具备良好的编程实践能力;(2)掌握算法分析方法,能够评价算法优劣,进行算法优化;(3)能够运用数据结构进行问题建模,提高问题解决效率。
3. 情感态度价值观目标:(1)激发学生对计算机科学的兴趣,培养其探索精神和创新意识;(2)培养学生团队合作意识,学会与他人共同解决问题;(3)增强学生的责任感和使命感,使其认识到数据结构在信息技术发展中的重要性。
本课程针对高中年级学生,结合学科特点和教学要求,将目标分解为具体的学习成果,为后续教学设计和评估提供依据。
课程注重理论与实践相结合,旨在提高学生的知识水平、技能素养和情感态度价值观。
二、教学内容《数据结构》教学内容依据课程目标进行选择和组织,确保科学性和系统性。
主要包括以下部分:1. 线性表:- 线性表的定义、特点和基本操作;- 顺序存储结构、链式存储结构及其应用;- 线性表的相关算法,如插入、删除、查找等。
2. 栈和队列:- 栈和队列的定义、特点及基本操作;- 栈和队列的存储结构及其应用;- 栈和队列相关算法,如进制转换、括号匹配等。
3. 树和二叉树:- 树的定义、基本术语和性质;- 二叉树的定义、性质、存储结构及遍历算法;- 线索二叉树、哈夫曼树及其应用。
4. 图:- 图的定义、基本术语和存储结构;- 图的遍历算法,如深度优先搜索、广度优先搜索;- 最短路径、最小生成树等算法。
5. 排序和查找:- 常见排序算法,如冒泡、选择、插入、快速等;- 常见查找算法,如顺序、二分、哈希等。
第四课树和二叉树一、选择题1.已知一算术表达式的中缀形式为A+B*C-D/E,后缀形式为ABC*+DE/-,其前缀形式为()。
A.-A+B*C/DE B.-A+B*CD/E C.-+*ABC/DE D.-+A*BC/DE参考答案:D2.一棵完全二叉树上有1001个结点,其中叶子结点的个数是()。
A.250 B.500 C.254 D.505 E.以上答案都不对参考答案:E3.设树T的度为4,其中度为1、2、3和4的结点个数分别为4、2、1、1,则T中的叶子数为()。
A.5 B.6 C.7 D.8参考答案:D4.在下述结论中,正确的是()。
①只有一个结点的二叉树的度为0;②二叉树的度为2;③二叉树的左右子树可任意交换;④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。
A.①②③B.②③④C.②④D.①④参考答案:D5.设森林F对应的二叉树为B,它有m个结点,B的根为p,p的右子树结点个数为n,森林F中第一棵树的结点个数是()。
A.m-n B.m-n-1 C.n+1 D.条件不足,无法确定参考答案:A6.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是()。
A.9 B.11 C.15 D.不确定参考答案:B7.具有10个叶结点的二叉树中有()个度为2的结点。
A.8 B.9 C.10 D.11参考答案:B8.下述编码中不是前缀码的是()。
A.(00,01,10,11)B.(0,1,00,11)C.(0,10,110,111)D.(1,01,000,001)参考答案:B9.设给定权值总数有n个,其哈夫曼二叉树的结点总数为()。
A.不确定B.2n C.2n+1 D.2n-1参考答案:D10.有关二叉树下列说法正确的是()。
A.二叉树的度为2 B.一棵二叉树的度可以小于2C.二叉树中至少有一个结点的度为2 D.二叉树中任何一个结点的度都为2参考答案:B11.二叉树的第i层上最多含有结点数为()。
A.2i B.2i-1-1 C.2i-1D.2i -1参考答案:C12.一个具有1025个结点的二叉树的高h为()。
A.11 B.10 C.11至1025之间D.10至1024之间参考答案:C13.对于有n个结点的二叉树,其高度为()。
A.nlog2n B.log2n C.⎣log2n⎦+1 D.不确定参考答案:D14.一棵具有n个结点的完全二叉树的树高度(深度)是()。
A.⎣logn⎦+1 B.logn+1 C.⎣logn⎦D.logn-1参考答案:A15.在一棵高度为k的满二叉树中,结点总数为()。
A.2k-1B.2k C.2k-1 D.⎣log2k⎦+1参考答案:C16.高度为k的二叉树最大的结点数为()。
A.2k B.2k-1C.2k-1 D.2k-1-1参考答案:C17.一棵树高为k的完全二叉树至少有()个结点。
A.2k–1 B.2k-1–1 C.2k-1D.2k参考答案:C18.将有关二叉树的概念推广到三叉树,则一棵有244个结点的完全三叉树的高度()。
A.4 B.5 C.6 D.7参考答案:C19.利用二叉链表存储树,则根结点的右指针是()。
A.指向最左孩子B.指向最右孩子C.空D.非空参考答案:C20.对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左、右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用()次序的遍历实现编号。
A.先序B.中序C.后序D.从根开始按层次遍历参考答案:C21.树的后根遍历序列等同于该树对应的二叉树的()。
A.先序序列B.中序序列C.后序序列参考答案:B22.下述二叉树中,()满足从任一结点出发到根的路径上所经过的结点序列按其关键字有序。
A.二叉排序树B.哈夫曼树C.A VL树D.堆参考答案:D23.一棵二叉树的前序遍历序列为ABCDEFG,它的中序遍历序列可能是()。
A.CABDEFG B.ABCDEFG C.DACEFBG D.ADCFEG参考答案:B24.已知一棵二叉树的前序遍历结果为ABCDEF,中序遍历结果为CBAEDF,则后序遍历的结果为()。
A.CBEFDA B.FEDCBA C.CBEDFA D.不定参考答案:A25.如果T2是由有序树T转换而来的二叉树,那么T中结点的后序就是T2中结点的()。
A.先序B.中序C.后序D.层序参考答案:B26.若二叉树的先序遍历为EFHIGJK,中序遍历为HFIEJKG,则该二叉树根的右子树的根是()。
A.E B.F C.G D.H参考答案:C27.将一棵树T转换为孩子兄弟链表表示的二叉树H,则T的后序遍历序列与H的()序列相同。
A.前序遍历B.中序遍历C.后序遍历参考答案:B28.下面的说法中正确的是()。
(1)任何一棵二叉树的叶子结点在三种遍历中的相对次序不变;(2)按二叉树定义,具有三个结点的二叉树共有6种。
A.(1)(2) B.(1) C.(2) D.(1)、(2)都错参考答案:B29.一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足()。
A.所有的结点均无左孩子B.所有的结点均无右孩子C.只有一个叶子结点D.是任意一棵二叉树参考答案:C30.在二叉树结点的先序序列,中序序列和后序序列中,所有叶子结点的先后顺序()A.都不相同B.完全相同C.先序和中序相同,而与后序不同D.中序和后序相同,而与先序不同参考答案:B31.某二叉树的前序序列和后序序列正好相反,则该二叉树一定是()的二叉树。
A.空或只有一个结点B.任一结点无左子树C.高度等于其结点数D.任一结点无右子树参考答案:C32.由3个结点可以构造出()种不同的二叉树。
A.2 B.3 C.4 D.5参考答案:D33.一棵左子树为空的二叉树在先序线索化后,其中空的链域的个数是:()。
A.不确定B.0 C.1 D.2参考答案:D34.一棵左右子树均不空的二叉树在先序线索化后,其中空的链域的个数是:()。
A.0 B.1 C.2 D.不确定参考答案:C35.若X是二叉中序线索树中一个有左孩子的结点,且X不为根,则X的前驱为()。
A.X的双亲B.X的右子树中最左的结点C.X的左子树中最右结点D.X的左子树中最右叶结点参考答案:C36.引入二叉线索树的目的是()。
A.加快查找结点的前驱或后继的速度B.为了能在二叉树中方便的进行插入与删除C.为了能方便的找到双亲D.使二叉树的遍历结果唯一参考答案:A37.线索二叉树是一种()结构。
A.逻辑B.逻辑和存储C.物理D.线性参考答案:C38.n个结点的线索二叉树上含有的线索数为()。
A.2n B.n-1 C.n+1 D.n参考答案:C39.()的遍历仍需要栈的支持。
A.前序线索树B.中序线索树C.后序线索树参考答案:C40.二叉树在线索后,仍不能有效求解的问题是()。
A.先序线索二叉树中求先序后继B.中序线索二叉树中求中序后继C.中序线索二叉树中求中序前驱D.后序线索二叉树中求后序后继参考答案:D41.由3个结点可以构造出()种不同的有序树。
A.2 B.3 C.4 D.5参考答案:A二、应用题1.设有一棵算术表达式树,用什么方法可以对该树所表示的表达式求值?参考答案:方法有二。
一是对该算术表达式(二叉树)进行后序遍历,得到表达式的后序遍历序列,再按后缀表达式求值;二是递归求出左子树表达式的值,再递归求出右子树表达式的值,最后按根结点运算符(+、-、*、/ 等)进行最后求值。
2.将算术表达式((a+b)+c*(d+e)+f)*(g+h)转化为二叉树。
参考答案:3.一棵有n(n>0)个结点的d度树,若用多重链表表示,树中每个结点都有d个链域,则在表示该树的多重链表中有多少个空链域?为什么?参考答案:n(n>0)个结点的d度树共有nd个链域,除根结点外,每个结点均有一个指针所指,故该树的空链域有nd-(n-1)=n(d-1)+1个。
4.试证明一棵二叉树中的结点的度或为0或为2,则二叉树的枝数为2(n0-1),其中n0是度为0的结点的个数。
参考答案:设二叉树度为0和2的结点数及总的结点数分别为n0,n2和n,则n=n0+n2(1)再设二叉树的分支数为B,除根结点外,每个结点都有一个分支所指,则n=B+1 (2)度为零的结点是叶子,没有分支,而度为2的结点有两个分支,因此(2)式可写为n=2*n2+1 (3) 由(1)、(3)得n2=n0-1,代入(1),并由(1)和(2)得B=2*(n0-1)。
5.证明任一结点个数为n的二叉树的高度至少为O(log2n)。
参考答案:最低高度二叉树的特点是,除最下层结点个数不满外,其余各层的结点数都应达到各层的最大值。
设n个结点的二叉树的最低高度是h,则n应满足2h-1<n<=2h-1关系式。
解此不等式,并考虑h是整数,则有h=⎣log2n⎦+1,即任一结点个数为n 的二叉树的高度至少为O(log2n)。
6.有n个结点并且其高度为n的二叉树的数目是多少?参考答案:2n-17.已知完全二叉树的第七层有10个叶子结点,则整个二叉树的结点数最多是多少?参考答案:235。
8.高度为10的二叉树,其结点最多可能为多少?参考答案:1023。
9.已知A[1..N]是一棵顺序存储的完全二叉树,如何求出A[i]和A[j]的最近的共同祖先?参考答案:根据顺序存储的完全二叉树的性质,编号为i的结点的双亲的编号是⎣i/2⎦,故A[i]和A[j]的最近公共祖先可如下求出:while(i/2!=j/2)if(i>j) i=i/2; else j=j/2;退出while后,若i/2=0,则最近公共祖先为根结点,否则最近公共祖先是i/2。
10.给定K(K>=1),对一棵含有N个结点的K叉树(N>0)、请讨论其可能的最大高度和最小高度。
参考答案:N个结点的K叉树,最大高度N(只有一个叶结点的任意k叉树)。
设最小高度为H,第i(1<=i<=H)层的结点数K i-1,则N=1+k+k2+…+ k H-1,由此得H=⎣log K(N(K-1)+1)⎦11.已知一棵满二叉树的结点个数为20到40之间的素数,此二叉树的叶子结点有多少个?参考答案:结点个数在20到40的满二叉树且结点数是素数的数是31,其叶子数是16。
12.一棵共有n个结点的树,其中所有分支结点的度均为K,求该树中叶子结点的个数。
参考答案:设分支结点和叶子结点数分别是为n k和n0,因此有n=n0+n k(1)另外从树的分枝数B与结点的关系有n=B+1=K*n k +1 (2)由(1)和(2)有n0=n-n k=(n(K-1)+1)/K。
13.若一棵完全二叉树中叶子结点的个数为n,且最底层结点数≧2,求其深度。