【数据结构】树

一些简单的性质:

  • 设树中的结点总数为n,等于所有结点的度数之和+1。设树中度数为i的结点数为ni
    ,则n=n0+n1+n2+…+nm=1+1 * n1+2 * n2+…+m*nm
  • 度为m的树中第i层上至多有m^i-1个结点(i>=1)
  • 高度为h的m叉树至少有(m^h-1)/(m-1)个结点
  • 具有n个结点的m叉树的最小高度为
    在这里插入图片描述

二叉树

五种基本形态

  • 空二叉树
  • 只有根结点
  • 只有左子树
  • 只有右子树
  • 左右子树都有

几种二叉树

  • 满二叉树
  • 完全二叉树
  • 二叉排序树
  • 平衡二叉树

二叉树的性质

  • 非空二叉树上的叶结点数等于2的结点数+1,即n0=n2+1
    B为分支总数,则n=B+1
    扩展:任意一棵树,若结点数量为n,则边的数量为n-1
  • 非空二叉树上第k层上至多有2^(k-1)个结点
  • 高度为h的二叉树至多有2^h-1(h>=1)个结点
  • 对完全二叉树按从上到下、从左到右的顺序依次编号1,2,…n,则有以下关系:
    1:i>1,结点i的双亲的编号[i/2],即当i为偶数时,其双亲的编号为i/2,它是双亲的左孩子。当i为奇数时,其双亲的编号为(i-1)/2,它是双亲的右孩子。
    2:当2i<=n时,结点i的左孩子编号2i,否则无左孩子。
    3:当2i+1<=n时,结点i的右孩子编号为2i+1,否则无右孩子。
    4:结点i所在层次(深度)为[logi]+1。
  • 具有n个结点的完全二叉树的高度为[log(n+1)]或[logn]+1

二叉树的存储结构

分为两种:顺序存储结构和链式存储结构
顺序是用数组
链式是用二叉链表或者三叉链表。在含n个结点的二叉链表中,含有n+1个空链域

选择题

在这里插入图片描述在这里插入图片描述yige在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

错题

这里是引用

考虑到第七层的结点是最多的,则树高为7,若是满二叉树,则一共有2^ 7-1=127个结点,而题中二叉树有126个结点,比满二叉树少一个结点,则第七层最多有63个结点
2.

这里是引用

王道答案上用的是公式法,非空二叉树中,度为0和2的结点数之间的关系为n0=n2+1,所以n2=123,总结点数:n=n0+n1+n2=n1+247。n1的取值为0或1,当n1=1时,结点数最多,最多为248

=============================================================
我的做法:124个叶子结点 ,第八层最多有128个叶子结点(满二叉树情况下),显然这不是满二叉树,第七层有64个结点,即第8层以上是满二叉树。
下面进行分类讨论,对第七层的64个结点讨论是否每个都有子结点有几个子节点

  • 62个子节点度为2,剩下2个作为第七层的叶子结点
    则共有124+2=126个叶子结点不符合题意
  • 61个子节点度为2,剩下3个作为第七层的叶子结点
    则共有122+3=125个叶子结点
  • 61个子节点度为2,一个子节点度为1,剩下2个作为第七层的叶子结点
    则共有122+1+2=125个叶子结点
  • 60个子节点度为2,一个子节点度为1,剩下3个作为第七层的叶子结点
    则共有120+1+3=124个叶子结点
    则共有121(第八层的叶子结点数)+127(第七层及以上)=248

这里是引用

用概念里面的公式,注意那个[x],是超过x的最小整数
4.

这里是引用

注意题中的任意,说明是对于任意二叉树而言的,考虑最坏情况2^k-1=31,即满足最坏情况的最好条件
在这里插入图片描述5.(C)

这里是引用

后序遍历:左右根 暂时不能理解答案的解释,先背下来
6.在二叉树的前序序列、后序序列、中序序列中,所有叶子结点的先后顺序完全相同
7.前序为A,B,C,后序为C,B,A的二叉树共有4棵
8.

这里是引用

二叉树的前序序列和中序序列的关系相当于以前序序列作为入栈次序,以中序序列作为出栈顺序
所以问题就转化为栈的题目
当然还有一种笨方法是一个一个试过去。
9.线索二叉树是一种物理结构
10.一棵左子树为空的二叉树在先序线索化之后,其中空的链域个数为2个
根结点的左子树为空且也没有前驱结点,先序遍历的最后一个元素为叶结点,所以空的链域有2个
11.

这里是引用

12.(D)

这里是引用

在先序线索二叉树中查找一个结点的先序后继很简单,查找先序前驱必须知道该结点的双亲结点,后序线索二叉树查找一个结点的后序前驱很简单,查找后序的后继必须知道该结点的双亲结点
13.(C)

这里是引用

举一个例子,注意只是左子树中最右的结点,但是不是叶子结点
14.后序线索树的遍历仍需要栈的支持
15.

这里是引用

前序和后序的顺序完全相反,则说明该二叉树只有左孩子或者右孩子,即该二叉树的高度为4。以1的孩子结点2作为根结点的子树也只能有左子树或者右子树,所以2不可能在序列中间,只有可能在首尾
16.(B)
在这里插入图片描述前序序列相当于入栈顺序,则中序序列相当于出栈顺序,而前序序列和中序序列可以确定一棵二叉树,所以根据卡特兰数(组合数的公式)算出

17.(B)

这里是引用

先序序列是先遍历父结点,接着左子树,最后右子树。
中序序列是先遍历左子树,接着父结点,最后右子树。
若没有左子树则先序和中序的序列相等了

18.设F是一个森林,B是由F变化来的二叉树。若F中有n个非终端结点,则B中右指针域为空的结点有n+1
非终端结点:度不为0的结点
先看下森林转化成二叉树的规则

这里是引用

树转化成二叉树的规则是:左孩子右兄弟,右指针域为空代表该结点没有兄弟结点,最后一棵树的根结点的右指针为空。对于每个非终端结点,其所有孩子结点在转化后最后一个孩子的右指针也为空,所以右指针域为空的点为n+1
19.(D)

这里是引用

树转化二叉树中,兄弟可以变成孩子,所以在树T中,X必是其双亲结点的右兄弟,即X在树中必有左兄弟

20.(B)

这里是引用

不理解背下来
21.

这里是引用

树的每个分支的所有子结点的最右结点无右孩子,根节点转化后也没有右孩子。
二叉树中无右孩子的结点个数=分支结点数+1
特殊值法:
在这里插入图片描述
22.

这里是引用

暂时不理解,选(C)
23.

这里是引用

【分析】
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

React生命周期

生命周期是一个抽象的概念&#xff0c;在生命周期的整个过程&#xff0c;分成了很多个阶段&#xff1a; 比如挂载阶段&#xff08;Mount&#xff09;&#xff0c;组件第一次在DOM树中被渲染的过程&#xff1b; 比如更新过程&#xff08;Update&#xff09;&#xff0c;组件状…

Spring集成Kafka

前言 我负责的其中一个项目&#xff0c;接口的交互量在千万级/d&#xff0c;所以要存储大量的日志&#xff0c;为了防止日志的存储影响到系统的性能&#xff0c;所以在技术选型就决定了使用Kafka中间件和一个日志存储系统来负责日志的存储。 使用Kafka 的优点&#xff1a; 1.…

图书推荐|大数据从业人人必备的Excel大数据处理分析

《Excel大数据处理&分析》为活页式新形态教材&#xff0c;介绍了Excel 2016的数据表基本操作、数据输入、数据获取、数据排序、数据筛选、分类汇总、公式与函数、日期和时间函数、数学和统计函数、查找和引用函数、数据透视表、图表的可视化分析、宏和VBA、数据分析工具的应…

23年软件测试前景和出路?新人入行测试怎样走“正确“的路...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 现在面试&#xf…

金融计量学第1节课:股指收益率序列统计特征

量化策略开发&#xff0c;高质量社群&#xff0c;交易思路分享等相关内容 导论与介绍 大家好&#xff0c;我是Le Chiffre 今天我们来为大家分享金融计量学系列内容&#xff0c;在松鼠量化3年多分享的内容中&#xff0c;大部分以量化策略为主&#xff0c;至今为止&#xff0c;…

Kotlin Lambda表达式和匿名函数的组合简直太强了

Kotlin Lambda表达式和匿名函数的组合简直太强了 简介 首先&#xff0c;在 Kotlin 中&#xff0c;函数是“第一公民”&#xff08;First Class Citizen&#xff09;。因此&#xff0c;它们可以被分配为变量的值&#xff0c;作为其他函数的参数传递或者函数的返回值。同样&…

【Excelc超实用快捷键!!!办公效率1000%up!up!up!】

目录索引 ctrle&#xff1a;提取数据&#xff1a;合并数据&#xff1a; 普通快捷键&#xff1a;ctrla&#xff1a;ctrlc&#xff1a;ctrlv&#xff1a;ctrlx&#xff1a;ctrlz&#xff1a;ctrly&#xff1a;ctrls&#xff1a;ctrlf&#xff1a; 文字格式快捷键&#xff1a;ctrl…

Python程序设计基础:数值

文章目录 一、数值数据类型二、python内置的数值操作三、math库 一、数值数据类型 Python语言可以很方便的用于处理数值运算问题&#xff0c;在数值运算过程中&#xff0c;常见的额两种数据类型分别为整数类型&#xff08;int&#xff09;和浮点类型&#xff08;float&#xf…

局域网内不同网段的设备互相连接设置

目录 介绍1、打开网络连接&#xff0c;找到本地网络->属性->ipv4->属性->高级&#xff1a;2、在高级设置页面&#xff0c;我们添加一个IP&#xff0c;这个IP和板子在一个网段&#xff0c;我这里设置的是192.168.253.101&#xff1a;3、设置完成即可生效&#xff0c…

Jetpack Compose ——Row

当我们构建界面时&#xff0c;经常需要在Compose中使用Row布局来水平排列多个组件。Row提供了一种方便的方式来管理和定位子组件&#xff0c;使它们按照我们期望的方式呈现。 在Compose中&#xff0c;Row可以接受多个子组件作为参数&#xff0c;并根据指定的布局规则进行排列。…

ChatGPT 应用——使用 chatGPT 写高考作文

写作文&#xff0c;很简单&#xff0c;但写一篇好的作文&#xff0c;是非常有难度的。 想要写一篇高分作文&#xff0c;需要对作文题目有正确的理解&#xff0c;需要展现独到的观点和深入的思考&#xff0c;需要具备清晰的逻辑结构&#xff0c;需要准确而得体的语言表达。 正…

金鸣识别的表格分析技术揭秘

表格分析是指将图片中的表格区域分割出来&#xff0c;并识别出表格中的单元格和单元格中的内容。表格分析技术主要包括以下几个步骤&#xff1a; 1. 表格检测&#xff1a;通过图像处理技术&#xff0c;将图片中的表格区域分割出来。 2. 单元格分割&#xff1a;将表格中的每个单…

Unity入门4——重要组件与API

一、GameObject &#xff08;一&#xff09;成员变量 // 名字 print(this.gameObject.name); this.gameObject.name "Lesson4唐老狮改名"; print(this.gameOb…

简单使用Hystrix

使用Hystrix之前&#xff0c;需要先对SpringCloud有所了解&#xff0c;然后才会使用的顺畅&#xff0c;它是我们SpringCould的一种保护机制&#xff0c;非常好用。 下面直接开始 先导入Hystrix所需要的依赖 <!-- 引入openfiegn--> <dependency> <groupId>org…

图解数据结构--栈的实现-C语言版本--源码

目录-总 -分- 总结构 图片可视化 总源码1.头文件介绍---分2.节点的实现3.栈顶栈底4.函数的提前声明5. 栈 ---初始化栈6. 栈 ---进栈7.栈 --- 遍历8.栈 --- 是否为空9.栈 --- 出栈10总结 图片可视化 总 源码 /*time 2023年6月12日12:39:06auther yzmcntent stract 栈 */#inclu…

SpringBoot整合ShardingSphere5.x实现数据加解密功能

环境&#xff1a;Springboot2.6.14 ShardingSphere5.3.0 准备环境 添加依赖 <dependency><groupId>org.apache.shardingsphere</groupId><artifactId>shardingsphere-jdbc-core</artifactId><version>${shardingsphere.version}</ve…

适合做读书笔记的工具 这款APP满足你的笔记需求

说到读书&#xff0c;就免不了要提到读书笔记。很多人认为&#xff0c;边读书边做笔记才能更好地帮助我们更深入地理解和记忆所读的书籍内容。通过记录书中的重要观点、论据、事实和例子&#xff0c;我们可以更好地掌握书中的知识和思想&#xff0c;而不是仅仅浏览、快速阅读或…

vscode右键点击,松开后自动触发鼠标所在位置的按钮(误触发双击效果)

例如如下&#xff0c;右键展开菜单&#xff0c;松手会自动触发转到声明功能 解决方案&#xff1a; 1、安装easystroke sudo apt-get install easystroke 2、打开easystroke&#xff0c;选择preferences tab 3、点击Gesture Button&#xff0c;在出现的框中右键单击一次 4、点…