二叉树的性质与推导及常见习题整理

news2024/11/25 6:23:39

目录

一、性质推导 

二、常见的二叉树性质习题

1. 某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树中的叶子结点数为()。

2.在具有 2n 个结点的完全二叉树中,叶子结点个数为()。

3.一个具有767个节点的完全二叉树,其叶子节点个数为()。

4.一棵完全二叉树的节点数为531个,那么这棵树的高度为()。

5.在一颗度为3的树中,度为3的结点有2个,度为2的结点有1个,度为1的结点有2个,则叶子结点有( )个。

6.一颗拥有1000个结点的树度为4,则它的最小深度是( )。

7.在一颗完全二叉树中,某一个结点没有其左孩子,则该结点一定( )。


一、性质推导 

1. 若一个二叉树有n个节点,则该二叉树共有(n-1)条边。

推导:如图,可以理解为二叉树除了根节点外,每一个节点头上都有一条边指向它。因此,边的总数就是n-1

2. 若规定 根结点的层数为 1 ,则一棵 非空二叉树的第 i 层上最多有 2^(i-1)   (i>0) 个结点。
推导:当第i层满的时候,就是该层节点数最多的时候。如下图的完全二叉树,第一层最多1个节点,第二层最多2个节点,第三层最多4个节点,第四层最多8个节点……可以归纳出规律:第i层最多2^(i-1)个节点。 

 3. 若规定只有根结点的二叉树的深度为1,则深度为K的二叉树的最大结点数是 2^k -1

(k>=0)

推导:深度为K的二叉树最大节点的情况是该树为一棵满二叉树。将每一层节点数求和,即该树的总结点数。求和的过程是等比数列的求和过程,根据等比数列求和的公式(其中n是项数):

 代入a1(首项)为2^0即1,q为2,n为k,可得最大节点数为: 2^k-1

4. 具有 n 个结点的完全二叉树的深度 k为log(n+1)上取整

推导:由性质3倒推可得:

向上取整即若一个数是3点几,则答案向上取4。

假设共有16个节点,n=16.则:2^k = 17,而2^4为16,2^5为32,因此k实际为4点几,但若k取4,则不够,还多了一个节点。因此k应当向上取5.

注意:这里的 k 还有另一种表示方式,即log(n)+1。此时 k 为log(n)+1向下取整。向下取整即3点几向下取3.

5. 对任何一棵二叉树 , 如果其 叶结点个数为 n0, 度为 2 的非叶结点个数为 n2, 则有 n0 n2 1 (度为0的节点个数比度为2的节点个数多一个。)

推导:该结论的推导运用到了二叉树边与节点个数的关系。

假设度为0的节点有n0个,度为1的节点有n1个,度为2的节点有n2个,总结点数为N。首先可得:N = n0 + n1 + n2 ……①(节点个数关系)

同时,由性质1可得,该二叉树有N-1条边。度为0的节点发射出0条边,度为1的节点发射出1条边,度为2的节点发射出2条边。由此可得:

N-1 = 0*n0 + 1*n1 + 2*n2 ……②(边条数关系)

由①和②可得结论:n0 = n2 + 1

6. 对于具有 n 个结点的完全二叉树 ,如果按照 从上至下从左至右的顺序对所有节点从 0 开始编号 ,则对于 序号为  i 的结点有
        若i>0 ,则其 双亲结点序号为: (i-1)/2 ;若 i=0 i 为根结点编号 ,无双亲结点。
        若2i+1<n,则其左孩子序号为: 2i+1; 否则无左孩子。
        若2i+2<n ,则其右孩子序号: 2i+2; 否则无右孩子。

推导:如下图规律所示。

若 i = 4,则其双亲序号为 (i-1)/2 即 (4-1)/2 为1;

左孩子2*i+1为9 < 总结点个数10,因此左孩子存在且序号为9;

右孩子2*i+2为10,不小于10,因此右孩子不存在。

若i = 5,则其双亲序号为(i-1)/2 即 2;

左孩子2*i+1为11大于10,因此左孩子不存在。由于该性质是针对完全二叉树的,因此其右孩子一定也不存在。

注意:若从1开始编号,则序号为i的节点的双亲节点序号为 i/2,左孩子节点为 2*i ,右孩子节点为 2*i + 1.

该结论可以不死记硬背,遇到的时候简单画图即可快速推导。

二、常见的二叉树性质习题

1. 某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树中的叶子结点数为()。

A、不存在这样的二叉树

B、200

C、198

D、199

答案选B。

由性质5可知,n0 = n2+1.n0 = 199+1 = 200

2.在具有 2n 个结点的完全二叉树中,叶子结点个数为()。

A n

B n+1

C n-1

D n/2

答案选A。

该题运用到了性质5.

首先分析题干,如何求叶子节点的个数?和节点个数相关的公式有二:

n0 = n2 + 1,N = n0 + n1 + n2

已知总个数N为2n,那么只要知道n1即可求出n0.

这里有一个重要的结论:

在完全二叉树中,如果节点总个数为奇数,则没有度为1的节点;如果节点总个数为偶数,只有一个度为1的节点。

节点个数是偶数,只有一个度为1的节点

节点个数是奇数,没有度为1的节点

2n为偶数,因此有一个度为1的节点。

2n = n0 + 1 + n2 = n0 + 1 + n0 - 1

2n = 2n0

n0 = n,故选A

3.一个具有767个节点的完全二叉树,其叶子节点个数为()。

A 383

B 384

C 385

D 386

答案选B。

本题同上。此时共有奇数个节点,因此没有度为1的节点,即n1 = 0.

由 N = n0 + n1 + n2得: 767 = n0 + 0 + n0 - 1

n0 = 768/2 = 384

4.一棵完全二叉树的节点数为531个,那么这棵树的高度为()。

A 11

B 10

C 8

D 12

答案选B。

已知节点求高度,运用性质4,h = log(n+1)向上取证。h = log(531+1),向上取整为10,故选B。

5.在一颗度为3的树中,度为3的结点有2个,度为2的结点有1个,度为1的结点有2个,则叶子结点有( )个。

A.4

B.5

C.6

D.7

本题选C。

运用了边与节点个数的关系。

令n3 = 2;n2 = 1;n1 = 2;设总结点的个数为N

则由节点个数的关系得 N = n3 + n2 + n1 + n0,由边条数的关系得 N-1 = 3*n3 + 2*n2 + 1*n1 + 0*n0

联立可得:N = 2 + 1 + 2 + n0,N-1 = 3*2 + 2*1 + 1*2 + 0

n0 = 6

6.一颗拥有1000个结点的树度为4,则它的最小深度是( )。

A.5

B.6

C.7

D.8

答案选B

当这棵树每一层都是满的时,它的深度最小。也就是说,这棵树应当是一棵满四叉树。

假设高度为h,则由求二叉树节点个数的公式类比可知:根据等比数列求和公式得,这个数的节点个数为(4^h - 1) / 3

当h = 5,最大节点数为341,当h = 6, 最大节点数为1365,所以,最小深度应该向上取整为6。

7.在一颗完全二叉树中,某一个结点没有其左孩子,则该结点一定( )。

A.是根结点

B.是叶结点

C.是分支结点

D.在倒数第二层

答案选B.

完全二叉树中,如果一个节点没有左孩子,则一定没有右孩子,它必定为一个叶子节点。

最后一层一定为叶子节点,但是倒数第二层也可能存在叶子节点。

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

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

相关文章

字母板上的路径[提取公共代码,提高复用率]

提取公共代码前言一、字母版上的路径二、贪心1、idea2、go3、代码不断拆分复用的过程总结参考文献前言 写代码&#xff0c;在提高效率的同时&#xff0c;要方便人看&#xff0c;这个人包括自己。大函数要拆分成一些小函数&#xff0c;让每个函数的宏观目的和步骤都显得清晰&am…

分享微信点餐小程序搭建步骤_微信点餐功能怎么做

线下餐饮实体店都开始摸索发展网上订餐服务。最多人选择的是入驻外卖平台&#xff0c;但抽成高&#xff0c;推广还要另买流量等问题&#xff0c;也让不少商家入不敷出。在这种情况下&#xff0c;建立自己的微信订餐小程序&#xff0c;做自己的私域流量是另一种捷径。那么&#…

分类模型评估:混淆矩阵、准确率、召回率、ROC

1. 混淆矩阵 在二分类问题中&#xff0c;混淆矩阵被用来度量模型的准确率。因为在二分类问题中单一样本的预测结果只有Yes or No&#xff0c;即&#xff1a;真或者假两种结果&#xff0c;所以全体样本的经二分类模型处理后&#xff0c;处理结果不外乎四种情况&#xff0c;每种…

反应-扩散方程(Reaction-diffusion system)

文章目录单组分反应-扩散方程双组分反应-扩散方程三组分和更多组分的反应-扩散方程Fishers equationKPP方程Belousov–Zhabotinsky reaction历史化学机理变体Noise-induced order数学背景Briggs–Rauscher reactionZFK equation行波解渐近解外部区域内部区域KPP-ZFK 转变Clavin…

13-PHP使用过的函数 121-130

121、bindColumn 将字段绑定到变量上 // while,foreach,list()进行结果数组的解构&#xff0c;解构到变量中; //!要在预处理对象上调用bindColumn函数 $stmt->bindColumn(id,$id); $stmt->bindColumn(name,$name); $stmt->bindColumn(sex,$sex); $stmt->bindColumn…

flink solt概念详解

ask是flink中的一个逻辑概念&#xff0c;一个任务由一个或者多个算子组合而成(多个算子构成一个任务是需要满足一定的条件才可以&#xff0c;有兴趣的老铁可以来了解一下 Operator Chain),为了提升任务执行的效率&#xff0c;可以对任务配置并行度&#xff0c;使任务在实际运行…

【服务器数据恢复】FreeNAS层UFS2文件系统数据恢复案例

服务器数据恢复环境&#xff1a; Dell存储服务器&#xff0c;采用esxi虚拟化系统&#xff0c;esxi虚拟化系统里有3台虚拟机&#xff1b;上层iSCSI使用FreeNAS构建&#xff0c;通过iSCSI方式实现FCSAN功能&#xff1b;FreeNAS层采用UFS2文件系统。 esxi虚拟化系统里有3台虚拟机中…

python中使用numpy包的向量矩阵相乘

一直对np的线性运算不太清晰&#xff0c;正好上课讲到了&#xff0c;做一个笔记整个理解一下 1.向量和矩阵 在numpy中&#xff0c;一重方括号表示的是向量vector&#xff0c;vector没有行列的概念。二重方括号表示矩阵matrix&#xff0c;有行列。 代码显示如下&#xff1a; …

VMware 复制已有的虚拟机并修改IP地址

第一步&#xff1a;关闭当前机器第二步&#xff1a;在VMware中右键要克隆的机器 选择管理-->克隆第三步&#xff1a;启动新克隆的虚拟机 修改主机名 如 hostname slave2第四步&#xff1a;修改克隆的虚拟机的ip地址和mac地址&#xff08;注意&#xff1a;由于slave2是克隆出…

直流电机驱动模块开发,为电子设备提供动力之源

直流电机分为有刷直流电机和无刷直流电机两种&#xff0c;有刷直流电机连接上直流电就能转动&#xff0c;但是想要做到精准的转速和方向控制离不开电机驱动模块&#xff1b;无刷直流电机则必须要有驱动才能转动&#xff0c;直流电机驱动模块能够充分利用和有效发挥电源的能量功…

MQTT X 1.9.1 发布:资源消耗降低 80%,稳定性大幅提升

经过两个 Beta 版本迭代&#xff0c;近日&#xff0c;MQTT 5.0 客户端工具 MQTT X 正式发布了 1.9.1 稳定版本。 该版本通过大规模性能优化以及已知问题修复实现了稳定性的飞跃提升。特别是在性能方面&#xff0c;以接收大量消息场景为例&#xff0c;v1.9.1 相比于上一版本&am…

【数据结构与算法】单调队列 | 单调栈

&#x1f320;作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《数据结构与算法要啸着学》 &#x1f387;座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录&#x1f449;…

【Python入门第七天】Python 数字

Python 数字 Python 中有三种数字类型&#xff1a; intfloatcomplex 为变量赋值时&#xff0c;将创建数值类型的变量&#xff1a; 实例 x 10 # int y 6.3 # float z 2j # complex如需验证 Python 中任何对象的类型&#xff0c;请使用 type() 函数&#xff1a; 实…

计算机图形学:中点Bresenham算法画椭圆

作者&#xff1a;非妃是公主 专栏&#xff1a;《计算机图形学》 博客地址&#xff1a;https://blog.csdn.net/myf_666 个性签&#xff1a;顺境不惰&#xff0c;逆境不馁&#xff0c;以心制境&#xff0c;万事可成。——曾国藩 文章目录专栏推荐专栏系列文章序一、实现思路二、…

分布式-分布式事务和分布式锁

分布式事务有哪些解决方案 分布式事务 指事务的参与者、支持事务操作的服务器、存储等资源分别位于分布式系统的不同节点之上。 分布式事务就是一个业务操作&#xff0c;是由多个细分操作完成的&#xff0c;而这些细分操作又分布在不同的服务器上&#xff1b;事务&#xff0c…

数据库(第一天)

文档信息 文档类别正式文档文档编号数据库基础课 1.2-001版本1.2-001文档名称数据库基础课编写负责人/编写时间梁昭东/2023 年 1 月 30 日审核负责人/审核时间年 月 日批准人/批准时间年 月 日 变更记录 日期版本号变更内容修订者2023.01.30v1.2版根据实际情况增删了部分内容…

LINUX【线程概念】

线程线程概念线程的优点线程的缺点线程异常线程用途linux进程和线程线程控制pthread 库创建线程线程等待线程退出线程分离线程互斥线程互斥相关概念线程互斥互斥量互斥量接口初始化互斥量销毁互斥量互斥量的加锁和解锁互斥量实现原理线程概念 线程是进程中的一个执行流 一个进程…

ShonyDanza:如何利用Shodan实现自定义的安全研究与网络防护

关于ShonyDanza ShonyDanza是一款支持自定义且易于使用的安全工具&#xff0c;该工具基于Shodan实现其功能&#xff0c;并且可以利用Shodan的强大能力帮助研究人员实现安全研究、安全测试和安全防护等任务。 ShonyDanza的功能包括&#xff1a; 1、根据搜索条件获取IP 2、根据…

LabWindows CVI 2017开发笔记--串口调试软件实例

一、新建工程 打开LabWindows CVI软件&#xff0c;在桌面新建SerialDebug文件夹用来保存工程文件&#xff0c;在欢迎页点击New–>Project 或者在软件首页点击File–>New–>Project 将Project创建在新的Workspace中&#xff0c;设置完成后点击OK 新建一个用户GUI界…

内存溢出、内存泄露的概述及常见情形

内存溢出&#xff08;OutofMemoryError&#xff09; 简述 java doc 中对 Out Of Memory Error 的解释是&#xff0c;没有空闲内存&#xff0c;并且垃圾收集器也无法提供更多内存。 JVM 提供的内存管理机制和自动垃圾回收极大的解放了用户对于内存的管理&#xff0c;由于 GC&…