【数据结构】——二叉树简答题模板

news/2024/11/20 8:31:18/

目录

  • 一、树和二叉树的概念
    • (一)二叉树的定义和性质
    • (二)树和二叉树的区别
  • 二、完全二叉树和满二叉树
  • 三、二叉树的遍历
    • (一)由序列确定二叉树
    • (二)不同遍历序列的关系
  • 四、二叉树的性质
    • (一)二叉树结点度的关系
    • (三)二叉树的最小与最大深度(高度)
  • 五、线索二叉树
  • 六、哈夫曼树
    • (一)哈夫曼树的定义
    • (二)哈夫曼树的构建步骤
    • (三)哈夫曼编码

一、树和二叉树的概念

(一)二叉树的定义和性质

1、简要说明二叉树的概念。二叉树有哪些性质。(至少写出3个)

:二叉树是一种树形结构,每个结点至多只有两棵子树,即二叉树中不存在度大于2的结点,且二叉树的子树也有左右之分。
性质:
①非空二叉树的叶子结点等于度为2的结点数加1,即n0=n2+1;
②高度为h的二叉树至多有2h-1个结点;
③一棵树高为h的完全二叉树至少有2h-1个结点,至多有2h-1个结点,
④一棵树高为h的完全二叉树中,总结点数N与高h的关系是h=⌈log2(n+1)⌉;
⑤对于一棵含有n个结点的二叉树,当它为完全二叉树时,具有最小高度,最小高度为h=⌈log2(n+1)⌉或⌊log2n⌋+1;当它为一棵单支树时具有最大高度,为一个线性表,即最大高度为n。

(二)树和二叉树的区别

1、树和二叉树的区别是什么?

:树和二叉树均有且只有一个根结点,根结点没有前驱结点,除了根结点其他所有结点都只有一个前驱结点,剩下的结点为m(m≥0)个互不相交的非空集合。树中结点的后继结点可以是任意多个,而二叉树中结点的后继结点最多只能有两个,即二叉树的度小于等于2。

二、完全二叉树和满二叉树

1、什么是完全二叉树?什么是满二叉树?它们两者之间的关系是怎么样的?

:深度(高度)为h,具有2h-1个结点的二叉树,其中每层结点都是满的二叉树,称为满二叉树,而若一棵树中除最后一层外,其余层的结点都是满的或结点的右子树缺少连续的若干个结点 ,则称为完全二叉树。满二叉树是完全二叉树的特例,可以说,若一棵树是满二叉树,则它必是完全二叉树,但不能说一个完全二叉树必是满二叉树。

三、二叉树的遍历

(一)由序列确定二叉树

1、由二叉树先序遍历和后序遍历序列能否唯一确定一棵二叉树?请举例解释。

:不能。例如,下面两个二叉树的前序序列和后序序列均相同,但是不是相同的二叉树。
在这里插入图片描述

(二)不同遍历序列的关系

1、试分析非空二叉树在什么情况下,其前序遍历序列与后序遍历序列相同以及前序遍历序列与后序遍历序列相反?

答:若一棵二叉树为空树或只有根结点,则其前序遍历序列和后序遍历序列相同。若一棵非空的二叉树只有一个叶子结点或二叉树的高度等于结点个数,则其前序遍历序列和后序遍历序列相反。

四、二叉树的性质

(一)二叉树结点度的关系

1、证明任意一棵二叉树中,若叶子结点的个数为n0,度为2的结点个数为n2,则必用n0=n2+1。

:设二叉树中度为1的结点个数为n1,由于二叉树中所有结点的度均小于等于2,所以总结点个数为N=n0+n1+n2,另外,二叉树中除了根结点外,其他结点至少有一个分支,度为1的结点有一个分支,度为2的结点有两个分支,则分支总数=N-1=n1+2n2,联立两式,可得n0=n2+1。

(三)二叉树的最小与最大深度(高度)

1、具有n个结点的二叉树,什么时候下其深度达到最大?什么情况下其深度达到最小?

:单支树时,二叉树的深度最大,最大为n层;若深度为h,结点个数满足2h+1-1时,即为满二叉树时,二叉树的深度最小。

五、线索二叉树

1、线索二叉树的作用是什么?

:由于在含有n个结点的二叉树中,有n+1个空指针。对于叶子结点,它有两个空指针,对于度为1的结点,只有一个空指针。将这些空指针利用起来,让其存放指向该结点的前驱或后继,从而使遍历二叉树更加简便,加快查找结点的前驱或后继的速度。

六、哈夫曼树

(一)哈夫曼树的定义

1、什么是哈夫曼树?若哈夫曼树有n个叶子结点,则其结点总数是多少?

:哈夫曼树是一棵最优二叉树,给定n个带有权值的叶子结点,构造一棵二叉树,使构造的二叉树的带权路径长度最小,即为最优二叉树,也称为哈夫曼树。若哈夫曼树有n个叶子结点,由于哈夫曼树中只有度为0和2的结点,不存在度为1的结点,则其结点总数为N=2n-1。

(二)哈夫曼树的构建步骤

1、写出构建哈夫曼树的哈夫曼算法思想。

:基于给定的n个带权值的结点构成的初始森林,首先,选出两棵权值最小的树作为左右子树相加,得出的权值之和是一个新根结点的权值,然后,将新结点插入到森林中,同时将左右子树从森林中删除,重复选取,直到森林中只有一棵树时,即为哈夫曼树。

(三)哈夫曼编码

1、哈夫曼编码是什么?

:哈夫曼编码是一种可变长度编码,且是无前缀编码,它根据字符出现的概率来对每个字符设定二进制编码,规定一个编码不能是其它编码的前缀,主要应用在数据压缩、加密解密等场景。


http://www.ppmy.cn/news/1260353.html

相关文章

html css样式选择器介绍

目录 一、单标签选择器二、多标签选择器三、类选择器四、标签结合类选择器五、多个标签结合类选择器六、子标签选择器七、所有子标签选择器八、相邻选择器九、多种选择器混合使用十、超链接样式选择器 一、单标签选择器 下面的 css 会将所有 h1 标签里的文字设置为红色 <!…

天池SQL训练营(三)-复杂查询方法-视图、子查询、函数等

-天池龙珠计划SQL训练营 SQL训练营页面地址&#xff1a;https://tianchi.aliyun.com/specials/promotion/aicampsql 3.1 视图 我们先来看一个查询语句&#xff08;仅做示例&#xff0c;未提供相关数据&#xff09; SELECT stu_name FROM view_students_info;单从表面上看起来…

Xilinx FPGA平台DDR3设计详解(三):DDR3 介绍

本文介绍一下常用的存储芯片DDR3&#xff0c;包括DDR3的芯片型号识别、DDR3芯片命名、DDR3的基本结构等知识&#xff0c;为后续掌握FPGA DDR3的读写控制打下坚实基础。 一、DDR3芯片型​号 电路板上的镁光DDR3芯片上没有具体的型号名。 ​如果想知道具体的DDR3芯片型号&#…

从零构建属于自己的GPT系列3:模型训练2(训练函数解读、模型训练函数解读、代码逐行解读)

&#x1f6a9;&#x1f6a9;&#x1f6a9;Hugging Face 实战系列 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在PyCharm中进行 本篇文章配套的代码资源已经上传 从零构建属于自己的GPT系列1&#xff1a;数据预处理 从零构建属于自己的GPT系列2&#xff1a;模型训…

《C++ primer》 anki学习卡片txt输出101张,更新至第2章,截止2023年12月6日

C程序中{{c1::}}要有main函数 一定 不一定 一个函数定义包含哪几个部分 返回类型 函数名&#xff08;形参列表&#xff09; { 函数体 } main函数返回值为0时&#xff0c;表示{{c1::}} 成功 失败 无论你使用命令行页面或者IDE&#xff0c;大多数编译器都要求程序源码存储在一…

1-Tornado的介绍

1 tornado的介绍 **Tornado**是一个用Python编写的可扩展的、无阻塞的**Web应用程序框架**和**Web服务器**。 它是由FriendFeed开发使用的&#xff1b;该公司于2009年被Facebook收购&#xff0c;而Tornado很快就开源了龙卷风以其高性能着称。它的设计允许处理大量并发连接&…

【1day】致远 A8+ OA wpsAssistServlet任意文件读取漏洞学习

注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现

nextTick

在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法&#xff0c;获取更新后的 DOM。 // 修改数据 vm.msg Hello // DOM 还没有更新 Vue.nextTick(function () {// DOM 更新了 })切换页签&#xff0c;不流畅&#xff0c;所以用nextTick&#xff0c;等页…