树和二叉树知识点大全及相关题目练习【数据结构】

树和二叉树

要注意树和二叉树是两个完全不同的结构、概念,它们之间不存在包含之类的关系
在这里插入图片描述

树的定义

树(Tree)是n(n≥0)个结点的有限集,它或为空树(n = 0);或为非空树,对于非空树T:
(1)有且仅有一个称之为根的结点;
(2)除根结点以外的其余结点可分为m(m>0)个互不相交的有限集T1, T2, …, Tm, 其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。
显然,树的定义是一个递归的定义

树的基本术语

根:即根结点(没有前驱)
叶子:即终端结点(没有后继)
森林:指m棵不相交的树的集合(例如删除A后的子树个数)
有序树:结点各子树从左至右有序,不能互换(左为第一)
无序树:结点各子树可互换位置
双亲:即上层的那个结点(直接前驱)
孩子: 即下层结点的子树的根(直接后继)
兄弟:同一双亲下的同层结点(孩子之间互称兄弟)
堂兄弟:即双亲位于同一层的结点(但并非同一双亲)
祖先:即从根到该结点所经分支的所有结点
子孙:即该结点下层子树中的任一结点
结点:即树的数据元素
结点的度:结点挂接的子树数
结点的层次:从根到该结点的层数(根结点算第一层)
终端结点:即度为0的结点,即叶子
分支结点:即度不为0的结点(也称为内部结点)
树的度:所有结点度中的最大值
树的深度(或高度):指所有结点中最大的层数

二叉树的定义

二叉树(Binary Tree)是n(n≥0)个结点所构成的集合,它或为空树(n = 0);或为非空树,对于非空树T:
(1)有且仅有一个称之为根的结点;
(2)除根结点以外的其余结点分为两个互不相交的子集T1和T2,分别称为T的左子树和右子树,且T1和T2本身又都是二叉树。
所有树都可以转为唯一对应的二叉树,不失一般性,任何树都可以与二叉树相互转换。
二叉树不是树的特殊情况,它们是两个概念

二叉树的特点

1、每个结点最多有两孩子(二叉树中不存在度大于2的结点)
2、子树有左右之分,其次序不能颠倒
3、二叉树可以是空集合,根可以有空的左子树或空的右子树
二叉树的五种基本形态:
在这里插入图片描述
(虽然二叉树与树概念不同,但有关树的基本术语对二叉树都适用)

二叉树的性质

性质一
在这里插入图片描述
第i层上至少有1个结点
性质二
在这里插入图片描述
深度为k时至少有k个结点

性质三
以n(0)表示度为0的结点的个数,以n(1)表示度为1的结点的个数,以n(2)表示度为2的结点个数
n(0)=n(2)+1
推导:
设一棵二叉树总结点个数为n,则从下往上看,每一个结点都有一条边和它的双亲结点相连(有且只有一条),头结点除外,因为他没有双亲结点,则这棵二叉树总共有n-1条边
又因为度为2的结点n(2)会生出两条边,度为1的结点n(1)会生出一条边,度为0的结点没有边,因此n-1=2* n(2)+1* n(1)
又因为总结点个数n=度为二的结点个数n(2)+度为一的结点个数n(1)+度为零的结点个数n(0)
n=n(2)+n(1)+n(0)
n-1=2 * n(2)+1 * n(1)
合并整理得n(0)=n(2)+1
在这里插入图片描述

两种特殊形式的二叉树

在这里插入图片描述
在这里插入图片描述
满二叉树在同样深度的二叉树中结点个数最多
满二叉树在同样深度的二叉树中叶子结点个数最多

在这里插入图片描述
在这里插入图片描述
在满二叉树中,从最后一个结点开始,连续去掉任意个结点,即是一颗完全二叉树
满二叉树一定是完全二叉树
完全二叉树不一定是满二叉树

相关题目练习

  1. (判断题)二叉树中每个结点的度不能超过2,所以二叉树是一种特殊的树。
    A. 对
    B. 错
    正确答案: 错
    二叉树和树完全是两个概念,两个东西,二叉树不是树的特例
  2. (判断题)哈夫曼树的总结点个数(多于1时)不能为偶数。
    A. 对
    B. 错
    正确答案: 对
    哈夫曼编码树中没有度为1的结点。若叶子结点的个数为n,则哈夫曼编码树的结点总数为 2n-1,因此总结点个数(多于1时)不能为偶数
  3. (判断题)由二叉树的先序序列和后序序列可以唯一确定一颗二叉树。
    A. 对
    B. 错
    正确答案: 错
    哈夫曼树一定是完全二叉树。
    A. 对
    B. 错
    正确答案: 错
  4. (判断题)满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。
    A. 对
    B. 错
    正确答案: 对
  5. (判断题)设一棵树T可以转化成二叉树BT,则二叉树BT中一定没有右子树。
    A. 对
    B. 错
    正确答案: 对
  6. (判断题)哈夫曼树中没有度数为1的结点。
    A. 对
    B. 错
    正确答案: 对
  7. (判断题)先序遍历一棵二叉排序树得到的结点序列不一定是有序的序列。
    A. 对
    B. 错
    正确答案: 对
  8. (判断题)中序遍历二叉排序树可以得到一个有序的序列。
    A. 对
    B. 错
    正确答案: 对
  9. (选择题)具有60个结点的二叉树,其叶子结点有12个,则度为1的结点数为( )。
    A. 11
    B. 13
    C. 48
    D. 37
    正确答案: D:37
  10. (选择题)Huffman树的带权路径长度WPL等于( )。
    A. 除根结点之外的所有结点权值之和
    B. 所有结点权值之和
    C. 各叶子结点的带权路径长度之和
    D. 根结点的值
    正确答案: C:各叶子结点的带权路径长度之和
  11. (选择题)在一棵二叉树上第4层的结点数最多为( )。
    A. 2
    B. 4
    C. 6
    D. 8
    正确答案: D
  12. (选择题)用顺序存储的方法将完全二叉树中的所有结点逐层存放在数组中R[1…n],结点R[i]若有左孩子,其左孩子的编号为结点( )。
    A. R[2i+1]
    B. R[2i]
    C. R[i/2]
    D. R[2i-1]
    正确答案: B
  13. (选择题)由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为( )。
    A. 24
    B. 48
    C. 72
    D. 53
    正确答案: D:53
  14. (选择题)如果F是由有序树T转换而来的二叉树,那么T中结点的前序就是F中结点的( )。
    A. 中序
    B. 前序
    C. 后序
    D. 层次序
    正确答案: B:前序
  15. (选择题)欲实现任意二叉树的后序遍历的非递归算法而不必使用栈,最佳方案是二叉树采用( )存储结构。
    A. 三叉链表
    B. 广义表
    C. 二叉链表
    D. 顺序
    正确答案: A
  16. (选择题)任何一棵二叉树的叶子结点在先序、中序和后序遍历序列中的相对次序( )。
    A. 不发生改变
    B. 发生改变
    C. 不能确定
    D. 以上都不对
    正确答案: A
  17. (选择题)根据二叉树的定义可知二叉树共有( )种不同的形态。
    A. 4
    B. 5
    C. 6
    D. 7
    正确答案: B
    在这里插入图片描述
  18. (选择题)设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有( )个空指针域。
    A. 2m-1
    B. 2m
    C. 2m+1
    D. 4m
    正确答案: B
  19. (选择题)设某棵二叉树中有2000个结点,则该二叉树的最小高度为( )。
    A. 9
    B. 10
    C. 11
    D. 12
    正确答案: C
  20. (选择题)设一棵m叉树中度数为0的结点数为N0,度数为1的结点数为Nl,……,度数为m的结点数为Nm,则N0=( )。
    A. Nl+N2+……+Nm
    B. l+N2+2N3+3N4+……+(m-1)Nm
    C. N2+2N3+3N4+……+(m-1)Nm
    D. 2Nl+3N2+……+(m+1)Nm
    正确答案: B
    在这里插入图片描述
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1552079.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

lambda表达式底层实现:反编译LambdaMetafactory + 转储dump + 运行过程 + 反汇编 + 动态指令invokedynamic

一、结论先行 lambda 底层实现机制 1.lambda 表达式的本质:函数式接口的匿名子类的匿名对象 2.lambda表达式是语法糖 语法糖:编码时是lambda简洁的表达式,在字节码期,语法糖会被转换为实际复杂的实现方式,含义不变&am…

基于springboot的数据库原理教学案例案例库管理系统

目录 毕设制作流程功能和技术介绍系统实现截图开发核心技术介绍:使用说明开发步骤编译运行代码执行流程核心代码部分展示可行性分析软件测试详细视频演示源码获取 毕设制作流程 (1)与指导老师确定系统主要功能; (2&am…

PMP--三模--解题--71-80

文章目录 7.成本管理--S曲线--S曲线对累计值进行监督和报告--S曲线可以同时报告成本与进度情况。适用于预测和敏捷项目。14.敏捷--信息发射源--是一种可见的实物展示其向组织内其他成员提供信息在不干扰团队的情况下即时实现知识共享。71、 [单选] 项目经理正在为刚刚进入第三次…

windows配置C++编译环境和VScode C++配置(保姆级教程)

1.安装MinGW-w64 MinGW-w64是一个开源的编译器套件,适用于Windows平台,支持32位和64位应用程序的开发。它包含了GCC编译器、GDB调试器以及其他必要的工具,是C++开发者在Windows环境下进行开发的重要工具。 我找到了一个下载比较快的链接:https://gitcode.com/open-source-…

FastAPI 第九课 -- 表单数据

目录 一. 前言 二. 声明表单数据模型 三. 在路由中接收表单数据 四. 表单数据的验证和文档生成 五. 处理文件上传 一. 前言 在 FastAPI 中,接收表单数据是一种常见的操作,通常用于处理用户通过 HTML 表单提交的数据。 FastAPI 提供了 Form 类型&a…

C++发邮件:如何轻松实现邮件自动化发送?

C发邮件的详细步骤与教程指南?如何在C中发邮件? 无论是定期发送报告、通知客户还是管理内部沟通,自动化邮件系统都能显著提升工作效率。AokSend将详细介绍如何使用C发邮件,实现邮件自动化发送,帮助您轻松管理邮件通信…

车视界系统小程序的设计

管理员账户功能包括:系统首页,个人中心,汽车品牌管理,汽车颜色管理,用户管理,汽车信息管理,汽车订单管理系统管理 微信端账号功能包括:系统首页,汽车信息,我…

4.1、FineReport单元格扩展和父子格

单元格扩展 1、配置数据集 2、纵向扩展 方法一: 方法二: 结果 多个字段纵向 2、横向扩展 方法一: 方法二: 结果 父子格 没什么特殊要求,就保持默认 1、右边的值默认以左边为左父格 2、下边的值默认以上边…

【Windows】如何取消显示Windows聚焦在桌面上生成的“了解此图片”图标

如下图所示,在更换Windows聚焦显示的时候,会在桌面多出一个“了解此图片”的图标,看着很烦,但又因为Windows聚焦自带的壁纸比其他主题的壁纸好看很多。 下面是消除办法: 打开注册表(按WindowsR&#xff0…

【COSMO-SkyMed系列的4颗卫星主要用途】

COSMO-SkyMed系列的4颗卫星主要用于提供一个多用途的对地观测平台,服务于民间、公共机构、军事和商业领域。以下是这4颗卫星的主要用途: 民防与环境风险管理: 卫星的高分辨率雷达图像可用于监测自然灾害,如地震、洪水、滑坡等&am…

51单片机学习第六课---B站UP主江协科技

DS18B20 1、基本知识讲解 2、DS18B20读取温度值 main.c #include<regx52.h> #include"delay.h" #include"LCD1602.h" #include"key.h" #include"DS18B20.h"float T; void main () {LCD_Init();LCD_ShowString(1,1,"temp…

汽车革命下半场AI先锋:广汽为新“智”汽车装配大模型“底盘”

汽车革命的上半场是电动化&#xff0c;下半场是智能化&#xff0c;这是全球汽车产业普遍认同的观点。当前&#xff0c;我国汽车产业已经在电动化上半场取得了显著成效&#xff0c;在下半场智能化的全球战场能否胜出&#xff0c;关键看车企的创新意愿和研发实力。 在2024年9月1…

【Orange Pi 5嵌入式应用编程】-用户空间GPIO控制

用户空间GPIO控制 文章目录 用户空间GPIO控制1、嵌入式Linux的GPIO子系统介绍1.1 sysfs文件访问GPIO1.2 通过字符设备访问GPIO1.3 库与工具2、RK3588的GPIO介绍3、用户空间操作GPIO编程3.1 硬件准备3.2 通过libgpio操作GPIO3.2.1 GPIO输出3.2.3 GPIO输入3.2.3 边沿事件检测(中断…

《Windows PE》3.2.3 NT头-扩展头

■扩展头&#xff08;可选标头仅限映像文件&#xff09; OptionalHeader字段描述了可执行文件的更多细节和布局信息&#xff0c;如图像基址、入口点、数据目录、节表等。它的具体结构取决于文件的机器架构&#xff0c;可以是IMAGE_OPTIONAL_HEADER32&#xff08;32位&#xff…

【论文笔记】Flamingo: a Visual Language Model for Few-Shot Learning

&#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&#xff0c;为生民立命&#xff0c;为往圣继绝学&#xff0c;为万世开太平。 基本信息 标题: Flamingo: a Visual Langu…

html空单元格的占位

先上代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title></head><body> <H1>我的WEB页面</H1><table border"2px" bgcolor"#7fffd4&…

【Ubuntu】安装常用软件包-mysql

我的几个服务是部署在docker的同一个网络里&#xff0c;这样相互访问就可以通过docker容器的名字访问&#xff0c;比如容器A访问容器B&#xff0c;就可以http://B:8080/xxx 这样访问&#xff0c;不用关心ip是多少。 所以mysql前面文章给安装到主机里&#xff0c;感觉有点坑自己…

JavaScript 网页设计案例 简单的电商案例 页面切换 数据搜索 动态网页

JavaScript 网页设计案例 简单的电商案例 页面切换 数据搜索 动态网页 1. 案例描述 以下是一个简单的产品展示网页&#xff0c;用户可以通过点击不同的产品类别按钮来查看相应的产品&#xff0c;且在鼠标悬停时显示产品详情。页面还将包含一个搜索框&#xff0c;用户可以输入…

深蕾半导体Astra™ SL1620详细介绍,嵌入式物联网处理器

一&#xff0c;SL1620是什么 Astra™ SL系列是深蕾半导体推出的高度集成的嵌入式物联网处理器SoC&#xff08;System on Chip&#xff09;系列产品&#xff0c;专为多模式消费者、企业和工业物联网工作负载而设计。SL1620是Astra™ SL系列中的一款成本和功耗优化的安全嵌入式So…

解决 Failed to connect to 127.0.0.1 port XXXX: Connection refused问题

查看自己的代理&#xff0c;如果有设置&#xff0c;取消即可。注意https还是http&#xff0c;或者都取消算了 git config --global http.proxy git config --global --unset http.proxygit config --global https.proxy git config --global --unset https.proxy注意如果有人在…