当前位置: 首页 > news >正文

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

目录

一、性质推导 

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

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,则有n0n21 (度为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=0i为根结点编号,无双亲结点。
        若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.

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

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

相关文章:

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

目录 一、性质推导 二、常见的二叉树性质习题 1. 某二叉树共有 399 个结点&#xff0c;其中有 199 个度为 2 的结点&#xff0c;则该二叉树中的叶子结点数为&#xff08;&#xff09;。 2.在具有 2n 个结点的完全二叉树中&#xff0c;叶子结点个数为&#xff08;&#xff…...

亚马逊卖家测评补单的重要性和缺点

对于亚马逊、沃尔玛、ebay、wish、newegg、速卖通、阿里国际站、shopee、lazada、temu、乐天、toktok、joom、ozon等卖家来说&#xff0c;测评补单是一个比较常见的话题&#xff0c;因为测评可以给自己产品留下优质的评价&#xff0c;让国外真实买家更加明确&#xff0c;便捷的…...

Java类和对象超详细整理,适合新手入门

目录 一、驼峰命名法 二、Java注释 三、转义符 四、Java程序它的基本结构是什么&#xff1f; 五、Java中的类 六、创建类 七、定义main方法 八、执行代码输出语句 九、Java中的对象 十、创建对象 十一、类与对象的关系 一、驼峰命名法 包名&#xff1a;多单词组成所…...

MySQL:连explain的type类型都没搞清楚,怎敢说精通SQL优化?

我们在使用SQL语句查询表数据时&#xff0c;提前用explain进行语句分析是一个非常好的习惯。通过explain输出sql的详细执行信息&#xff0c;就可以针对性的进行sql优化。 今天我们来分析一下&#xff0c;在explain中11种不同type代表的含义以及其应用场景。 1&#xff0c;sys…...

6.11 极分解

文章目录计算方法代码实现计算方法 一个复数可以写成极坐标形式:zreiθzre^{i\theta}zreiθ.这种分解&#xff0c;左边代表长度&#xff0c;右边代表角度。由此为灵感来源&#xff0c;前人对矩阵也有类似的分解。就是猜想一个线性变换对矩阵的作用&#xff0c;是不是可以分解为…...

Spring、SpringMVC、Shiro、Maven

一、SpringSpring是一个为了解决企业应用程序开发复杂性而创建的开源框架&#xff0c;其核心是IOC–控制反转、AOP–面向切面编程。框架的主要优势之一就是其分层架构&#xff08;WEB层&#xff08;springMvc&#xff09;、业务层&#xff08;Ioc&#xff09;、持久层&#xff…...

element-plus 使用笔记

npm install element-plus --save自动导入 npm install -D unplugin-vue-components unplugin-auto-import// vite.config.jsimport AutoImport from unplugin-auto-import/vite import Components from unplugin-vue-components/vite import { ElementPlusResolver } from …...

《蓝桥杯每日一题》 前缀和·Acwing 3956. 截断数组

1.题目https://www.acwing.com/problem/content/3959/给定一个长度为 n 的数组a1,a2,…,an。现在&#xff0c;要将该数组从中间截断&#xff0c;得到三个非空子数组。要求&#xff0c;三个子数组内各元素之和都相等。请问&#xff0c;共有多少种不同的截断方法&#xff1f;输入…...

促进关键软件高层次人才培养:平凯星辰与华东师范大学签订联合博士培养合作协议

2022 年年初&#xff0c;平凯星辰入选首批工信部教育部支持联合培养国家关键软件高层次人才计划。该计划旨在探索关键软件产教融合育人模式&#xff0c;超常规加快培养一批急需高层次人才&#xff0c;以及探索关键软件联合技术攻关新模式。2022 年年底&#xff0c;在该计划下 平…...

Java程序员的日常——经验贴

关于文件的解压和压缩 如果你的系统不支持tar -z命令 前往讨论 如果是古老的Unix系统&#xff0c;可能并不认识tar -z命令&#xff0c;因此如果你想要压缩或者解压tar.gz的文件&#xff0c;就需要使用gzip或者gunzip以及tar命令了。 关于tar.gz可以这么理解&#xff0c;tar结…...

电商API社区,商品数据,关键词搜索等

1. 需要做的事情 l 商品详情页实现 1、商品查询服务事项 2、商品详情展示 3、添加缓存 2. 实现商品详情页功能 2.1. 功能分析 1、Taotao-portal接收页面请求&#xff0c;接收到商品id。 2、调用taotao-rest提供的商品详情的服务&#xff0c;把商品id作为参数传递给服务。接…...

LEADTOOLS 22.0.6 UPDATE-Crack

OCR SDK 库 许多 OCR 增强功能 LEAD 行业领先的人工智能 OCR SDK 在以下方面获得了显着的识别优化&#xff1a;斜体、大写和小写字母、文本行组装和单词构建、列检测、基线检测和文本行分割。 LEADTOOLS为.NET 6、. NET Framework、Xamarin、UWP、C#、VB、C/C、Java、Objective…...

什么是OJ? 东方博宜题库部分题解

什么是OJ ? Online Judge 比如这样的:Home - 一本通OJ Q:这个在线裁判系统使用什么样的编译器和编译选项? A:系统运行于Debian/Ubuntu Linux. 使用GNU GCC/G++ 作为C/C++编译器, C: gcc Main.c -o Main -fno-asm -O2 -Wall -lm --static -std=c99 -DONLINE_JUDGE C++: g++ …...

企业工程项目管理系统源码的各模块及其功能点清单

工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#xff1a;实现对数据字典标签的增删改查操作 2、编码管理&#xff1a;实现对系统编码的增删改查操作 3、用户管理&#xff1a;管理和查看用户角色 4、菜单管理&#xff1a;实现对系统菜单的增删改查操…...

【电商开发手册】订单-下单

下单需求 所谓下单&#xff0c;本质上就是买卖双方通过确认一系列信息并且签订电子合同的过程 在电商平台的下单过程中&#xff0c;也需要确定买卖双方的一系列信息&#xff1a; 买方&#xff1a;用户确认收货地址、支付方式、配送方式等等 卖方&#xff1a;卖方需要进行供…...

数据结构 - 优先级队列(堆)

文章目录前言1.介绍优先级队列2. 认识堆3. 实现优先级队列3.1 了解优先级队列的构造方法&#xff1a;3.2 使用优先级队列解决问题&#xff1a;总结前言 本篇PriorityQueue优先级队列的介绍其底层是堆&#xff0c;关于堆的认识&#xff0c;使用优先级队列能解决的一些问题&…...

PDF内容提取器:ByteScout PDF Extractor SDK Crack

ByteScout PDF Extractor SDK – 用于 PDF 到 JSON、PDF 到 Excel、CSV、XML、从 .NET 和 ASP.NET 从 PDF 中提取文本的 PDF 提取器库 ByteScout PDF Extractor SDK – 用于 PDF 到 JSON、PDF 到 Excel、CSV、XML、从 .NET 和 ASP.NET 从 PDF 中提取文本的 PDF 提取器库​ ​ ​…...

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

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

c# winform错误大全

c# winform 错误大全为了实现安装包安装完成后&#xff0c;启动程序。System.BadImageFormatException: 未能加载文件或程序集“file:///C:\xxxxxxxxx\xxxxxxx.exe”或它的某一个依赖项。生成此程序集的运行时比当前加载的运行时新&#xff0c;无法加载此程The version of the …...

AI_News周刊:第一期

2023.02.06—2023.02.12 关于ChatGPT的前言&#xff1a; 在去年年末&#xff0c;OpenAI的ChatGPT在技术圈已经火了一次&#xff0c;随着上周它的二次出圈&#xff0c;ChatGPT算得上是人工智能领域的一颗明星&#xff0c;它在聊天机器人领域有着不可忽视的影响力。其准确、快速…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端&#xff08;即页面 JS / Web UI&#xff09;与客户端&#xff08;C 后端&#xff09;的交互机制&#xff0c;是 Chromium 架构中非常核心的一环。下面我将按常见场景&#xff0c;从通道、流程、技术栈几个角度做一套完整的分析&#xff0c;特别适合你这种在分析和改…...