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

树和二叉树

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

树的定义

树(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.rhkb.cn/news/436116.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Threejs创建正多边体

上一章节实现了球体的绘制,这节来绘制多面体,包括正多面体,平面中,每条边一样长组成的图形叫正多边形,这里每个面一样,叫正多面体。如上文一样,先要创建出基础的组件,包括场景&#…

【c++面试总结】

1. NULL 和 nullptr 区别 int overLoadTest(int x) {cout << __LINE__ << endl;return 0; }int overLoadTest(char* x) {cout << __LINE__ << endl;return 0; }int main() {char x[10] {1,2,3,4,5};overLoadTest(1);overLoadTest(x);overLoadTest(nu…

LeetCode 918. 环形子数组的最大和

原题链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 给定一个长度为 n 的环形整数数组 nums &#xff0c;返回 nums 的非空 子数组 的最大可能和 。 环形数组 意味着数组的末端将会与开头相连呈环状。形式上&#xff0c; nums[i] 的下一个元素是 nums[(i 1) % n…

Node.JS 版本管理工具 Fnm 安装及配置(Windows)

Fnm 安装及配置&#xff08;Windows&#xff09; Fnm&#xff08;Fast Node Manager&#xff09;&#x1f680; 一个快速而简单的 Node.js 版本管理工具&#xff0c;使用 Rust 编写。 1 安装 官网&#xff1a;Fnm&#xff08;镜像网站 &#xff09;。下载&#xff1a;Fnm&a…

【议题征集 】上海站 nMeetup 将于十月份开启!

上海&#xff0c;作为我国的经济和金融中心&#xff0c;正迅速发展成为全球领先的科技创新城市。这座城市不仅拥有深厚的文化底蕴&#xff0c;还积极拥抱数字化转型&#xff0c;推动着数据库和人工智能基础设施的快速发展。第三站 nMeetup 我们将走进上海&#xff0c;本次活动由…

被Karpathy誉为“蕴藏着类似ChatGPT的机会的AI产品Notebook LM”,它到底做对了什么?

就在昨天&#xff0c;Karpathy在X上连续发布了多条安利帖&#xff0c;强烈地给大家推荐一个AI产品NotebookLM。 嘶&#xff5e;给周围人疯狂种草并不稀奇&#xff0c;但Karpathy的推荐理由给NotebookLM戴了一个高帽子-他提到这款产品让人联想到ChatGPT。 这种就令人好奇&#…

数通 1

通信&#xff1a;需要介质才能通信电话离信号塔&#xff08;基站&#xff09;越远&#xff0c;信号越弱。信号在基站之间传递。你离路由器越远&#xff0c;信号越差。一个意思 比如想传一张图片&#xff0c;这张图片就是数据载荷 网关&#xff0c;分割两个网络。路由器可以是网…

vue + echarts 快速入门

vue echarts 快速入门 本案例即有nodejs和vue的基础&#xff0c;又在vue的基础上整合了echarts Nodejs基础 1、Node简介 1.1、为什么学习Nodejs(了解) 轻量级、高性能、可伸缩web服务器前后端JavaScript同构开发简洁高效的前端工程化 1.2、Nodejs能做什么(了解) Node 打破了…

TI DSP TMS320F280025 Note14:模数转换器ADC原理分析与应用

TMS320F280025 模数转换器ADC原理分析与应用 ` 文章目录 TMS320F280025 模数转换器ADC原理分析与应用逐次比较型ADC和双积分型ADC工作原理逐次比较型 ADC双积分型 ADC280025ADCADC原理分析ADC时钟SOCSOC内部原理ADC触发方式ADC采集(采样和保持)窗口通道寄生电容基准电压发生器模…

【15%】100小时机器学习——什么是机器学习

前言 虽然已经好久没有更新了&#xff0c;但笔者最近一直都在努力学习哦。 前面三三两两根据GitHub上的项目写了一些实验操作&#xff0c;但是总觉得这样是不行的。碎片化的学习只能是建立在已知的基础上进行熟练&#xff0c;不能作为打基础的主力方法&#xff0c;最关键的是&a…

用责任链模式改造 if else

我的上一篇文章&#xff0c;因为if else 多了&#xff0c;捣鼓很久&#xff0c;今天用责任链模式改造一下。 代码写着写着&#xff0c;if else if 逻辑忘记了&#xff0c;哎。。。-CSDN博客 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09; 1. 什么是责任…

Linux下的基本指令/命令(一)

目录 基本命令 1. Is命令/指令: 罗列当前目录下指定的文件或者目录. 2. pwd命令&#xff1a; 查看当前工作的路径 3. cd命令&#xff1a; 切换到指定路径下。 只能切换到目录中 4. tree命令: 树状显式目录 使用前要输入命令 yum install -y tree &#xff0c;用来安装一个…

Redis入门第二步:Redis数据类型详解

摘要&#xff1a; 欢迎继续跟随《Redis新手指南&#xff1a;从入门到精通》专栏的步伐&#xff01;在本文中&#xff0c;我们将深入探讨Redis支持的各种数据类型&#xff0c;这些类型是Redis强大功能的核心。通过学习不同的数据类型&#xff0c;你将能够根据具体的应用需求选择…

【Spring基础3】- Spring的入门程序

目录 3-1 Spring的下载3-2 Spring的 jar 包3-3 第一个 Spring程序第一步&#xff1a;添加spring context的依赖&#xff0c;pom.xml配置如下第二步&#xff1a;添加junit依赖第三步&#xff1a;定义bean&#xff1a;User第四步&#xff1a;编写spring的配置文件&#xff1a;bea…

技术成神之路:设计模式(十八)适配器模式

介绍 适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许接口不兼容的类可以协同工作&#xff0c;通过将一个类的接口转换成客户端所期望的另一个接口&#xff0c;使得原本由于接口不兼容而不能一起工作的类可以一起工作。 1.定义 适配…

python编程开发“人机猜拳”游戏

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

计算机毕业设计 基于深度学习的短视频内容理解与推荐系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

【架构】前台、中台、后台

文章目录 前台、中台、后台1. 前台&#xff08;Frontend&#xff09;特点&#xff1a;技术栈&#xff1a; 2. 中台&#xff08;Middleware&#xff09;特点&#xff1a;技术栈&#xff1a; 3. 后台&#xff08;Backend&#xff09;特点&#xff1a;技术栈&#xff1a; 示例场景…

万界星空科技铜拉丝行业MES系统,实现智能化转型

一、铜拉丝行业生产管理的难点主要体现在以下几个方面&#xff1a; 1、标准严格&#xff1a;铜线产品对质量的要求极高&#xff0c;特别是在电气性能、导电性、耐腐蚀性等方面&#xff0c;任何微小的瑕疵都可能影响产品的使用效果和安全性。 2、过程监控&#xff1a;生产过程…

极速 JavaScript 打包器:esbuild

文章目录 前言什么是esbuild&#xff1f;esbuild如何实现如此出色的性能&#xff1f;基本配置入口文件输出文件模块格式targetplatformexternalbanner和footer 结论 前言 esbuild是一个快速、可扩展的JavaScript打包器和压缩器&#xff0c;它的目标是成为最快的打包器。它使用…