数据结构:完全二叉树开胃菜小练习

news2024/9/30 23:27:12

目录

一.前言

二.完全二叉树的重要结构特点

三.完全二叉树开胃菜小练习

1.一个重要的数学结论

2.简单的小练习


一.前言

关于树及完全二叉树的基础概念(及树结点编号规则)参见:http://t.csdn.cn/imdraicon-default.png?t=N176http://t.csdn.cn/imdra

完全二叉树是一种非常重要的数据结构:

n个结点的完全二叉树结点编号是从0~(n-1)连续排列的(假设根结点的编号为0),因此将完全二叉树映射到内存中线性存储结构中内存利用效率十分的高(数组下标和树结点编号建立绝对映射关系).

最经典的完全二叉树线性存储结构就是大小根堆(堆排序的数据结构基础)

二.完全二叉树的重要结构特点

  • 假设一个结点总数为n完全二叉树T的高度为k,为了满足各结点编号是0~(n-1)连续排列的结构定义,完全二叉树1~(k-1)层所有结点构成的子结构是一颗满二叉树(也就意味着完全二叉树的所有叶结点分布在树的最后一层(第k层)):
  • 假设一个结点总数为n完全二叉树T的高度为k,为了满足各结点编号是0~(n-1)连续排列的结构定义,完全二叉树的第k层(最后一层)的叶节点必须是连续排列的(也就是意味着结点总数为奇数的完全二叉树不存在出度为1的分枝结点,结点总数为偶数的完全二叉树有且仅有一个出度为1的分枝结点)

三.完全二叉树开胃菜小练习

1.一个重要的数学结论

  • 对任何一棵二叉树, 如果出度为0其叶结点个数为N0出度为2的分枝结点个数为N2(包括根) ,则有 N0= N2+1

该结论具体证明参见小青菜的博客 :http://t.csdn.cn/imdraicon-default.png?t=N176http://t.csdn.cn/imdra

2.简单的小练习

  • 现有一颗具有 2n 个结点的完全二叉树T,求其叶结点的个数

求解:

设T出度为0的结点个数为N0(即叶结点的个数),

出度为1的结点个数为N1,

出度为2的结点个数为N2。

根据本篇第二章中的结构分析可知,N1要么为1,要么为0

  1. N1 = 0,根据关系式N0 = N2 + 1,可得:2n = N0 + N1 + N2,化简可得N0 = (2n+1)/2,N0不为整数,因此该种情况排除
  2. N1 =1,根据关系式N0 = N2 + 1,可得:2n = N0 + N1 + N2,化简可得N0 = n,满足题意

因此T叶节点个数为n

  • 一棵完全二叉树的结点总数为531个,求这棵树的高度

求解:

设该树的高度为k

根据本篇第二章中的结构分析可知,该树前k-1层构成一颗满树(根据等比数列求和公式满树总结点个数为2^(k-1)-1)

2^9 = 512<531<2^10 = 1024,因此k-1 = 9,可以求得该二叉树的高度为10

  • 现有一颗具有767个结点的完全二树T,求其叶子结点个数

求解:

设T出度为0的结点个数为N0(即叶结点的个数),

出度为1的结点个数为N1,

出度为2的结点个数为N2。

根据本篇第二章中的结构分析可知,N1要么为1,要么为0

  1. N1 = 0,根据关系式N0 = N2 + 1,可得:767 = N0 + N1 + N2,化简可得N0 = 384,满足题意
  2. N1 =1,根据关系式N0 = N2 + 1,可得:767 = N0 + N1 + N2,化简可得N0 = 767/2,N0不为整数,因此该种情况排除

因此T叶节点个数为384

 

 

 

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

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

相关文章

22-基于分时电价条件下家庭能量管理策略研究MATLAB程序

参考文献&#xff1a;《基于分时电价和蓄电池实时控制策略的家庭能量系统优化》参考部分模型《计及舒适度的家庭能量管理系统优化控制策略》参考部分模型主要内容&#xff1a;主要做的是家庭能量管理模型&#xff0c;首先构建了电动汽车、空调、热水器以及烘干机等若干家庭用户…

【C++入门第二期】引用 和 内联函数 的使用方法及注意事项

前言引用的概念初识引用区分引用和取地址引用与对象的关系引用的特性引用的使用场景传值和引用性能比较引用和指针的区别内联函数内联函数的概念内联函数的特性前言 本文主要学习的是引用 及 内联含函数&#xff0c;其中的引用在实际使用中会异常舒适。 引用的概念 概念&…

基于SpringBoot的企业资产管理系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7/8.0 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9 浏…

蓝桥2.24训练

1&#xff0c;奇怪的函数 P2759 奇怪的函数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 1这道题有两个点&#xff0c;一个是求数的位数 2&#xff0c;用整数二分求出的位数与n比较 #include <bits/stdc.h> using namespace std; typedef long long ll; ll n; int ma…

【华为OD机试模拟题】用 C++ 实现 - 矩阵最值(2023.Q1)

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

flutter- JSON解析框架使用方法json_serializable

对于目前来说&#xff0c;大部分的API网络请求的通讯内容数据格式都是JSON。JSON返回的都是字符串&#xff0c;假如要取到data里面的id&#xff0c;去直接字符串截取肯定是不行的&#xff0c;要通过一定的方式把它解析成Map或者解析成对象&#xff0c;再去处理它。像一些简单的…

YOLOv5深度剖析

目录 YOLOv5算法概述 网络结构 backbone Conv模块&#xff1a; C3模块 SPPF neck 图形特征与语义特征 特征金字塔 head YOLOv5算法原理 以感受野理解网格 框回归以及分类 YOLOv5细节 消除网格敏感度 b. 正样本匹配 c. 损失计算 YOLOv5算法概述 YOLOv5与历代YO…

【异常】导出Excel异常This archive contains unclosed entries.

一、异常说明 二、定位问题代码 一看问题, 上下文都是与订单相关的内容。 查询代码的使用地方,发现出现在这个Mybatis的select语句中 查看备注,发现是订单物流,那就没跑了, 肯定是商城的物流模块出了问题 那是什么地方用到了这个物流模块而且涉及到导出功能呢? 经验告诉…

代码随想录算法训练营day42 |动态规划之背包问题 11.分割等和子集 1049. 最后一块石头的重量 II 494. 目标和 474.一和零

day4211.分割等和子集1.dp数组的含义2.确定递推公式3.dp数组初始化4.确定遍历顺序5.打印dp数组1049. 最后一块石头的重量 II1.确定dp数组以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp数组494. 目标和1.确定dp数组以及下标的含义2.确定递推公式3.…

ChatGPT懂SAP吗?跟ChatGPT聊完后,我暂时不担心会失业

我弄了个ChatGPT账号。随便问了一下他SAP的问题。贴出来跟大家分享一下。 问题1&#xff1a;我是 SAP 开发工程师&#xff0c;你有什么可以帮到我。 作为一个语言模型&#xff0c;我可以为您提供关于SAP开发的一般性建议&#xff0c;以及关于如何使用SAP软件的一些技巧。以下是…

【华为OD机试模拟题】用 C++ 实现 - 合规数组(2023.Q1)

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

流感来了,这类人最容易感染!

最近有学校因多名学生发热停课&#xff0c;浙江多地疾控也提醒大家现在是进入了甲流高发期。今天就来讲一讲甲流该如何防护。首先甲流与普通感冒不同&#xff0c;感冒病原体是鼻病毒、冠状病毒、副流感病毒等。流感病毒是正粘病毒科&#xff0c;根据核蛋白和基质蛋白M1抗原性的…

六千字让你明白什么是数字孪生?

文章目录1. 背景2. 数字孪生基础2.1 概念2.2 价值3. 技术生态3.1 技术体系3.2 核心技术3.2.1 多领域、多尺度融合建模3.2.2 数据驱动与物理模型融合的状态评估3.2.3 数据采集和传输3.2.4 全生命周期数据管理3.2.5 虚拟现实呈现3.2.6 高性能计算3.3 建设3.3.1 重点3.3.1.1 数字孪…

3款强大且实用的电脑软件,颠覆你的认知,值得一试

闲话少说&#xff0c;直上狠货。 1、一个木函 一个木函仅一张照片的体积&#xff0c;却提供了与日常、图片、设备、文件、文字处理等等相关的80多种工具&#xff0c;相当实用&#xff0c;更牛的是&#xff0c;完全免费&#xff0c;无任何弹屏广告。一个木函体积小&#xff0c;简…

力扣-游戏玩法分析

大家好&#xff0c;我是空空star&#xff0c;本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目&#xff1a;511. 游戏玩法分析二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其他总结…

【Acwing 周赛复盘】第91场周赛复盘(2023.2.18)

【Acwing 周赛复盘】第91场周赛复盘&#xff08;2023.2.18&#xff09; 周赛复盘 ✍️ 本周个人排名&#xff1a;1286/3115 AC情况&#xff1a;2/3 这是博主参加的第六次周赛&#xff0c;周赛当晚有事&#xff0c;是后来定时自测的 &#x1f602; 在 20 分钟内 AC 了 2 题&…

计算机408考研先导课---C语言难点2

目录 一、字符型数据与字符串型数据的比较 1、字符型数据特点 2、字符串型数据特点 二、字符数组 1、定义 2、输入输出 ①输入 ②输出 3、字符处理函数 ①put函数 ②gets函数 ③strcat函数 ④strcpy函数 ⑤strcmp函数 ⑥strlen函数 ⑦strlwr函数 ⑧strup…

LeetCode练习三:链表

文章目录一、链表基础1.1 无序表&#xff08;UnorderedList&#xff09;1.1.2 双向链表1.1.3 循环链表1.2 链表的基本操作1.2.1 定义链表结构1.2.2 建立线性链表1.2.3 求线性链表的长度1.2.4 查找元素1.2.5 插入元素1.2.6 改变元素1.2.7 删除元素1.3 有序表OrderedList1.4 链表…

Redis之消息队列实现

文章目录秒杀场景采用消息队列实现List实现消息队列PubSub&#xff08;发布订阅&#xff09;实现消息队列基于Stream实现消息队列消费者组实践总结秒杀问题是非常重要且比较难实现的&#xff0c;如果不进行架构的优化的话&#xff0c;直接访问会给业务系统造成很大的压力… 秒杀…

【Linux】system V共享内存 | 消息队列 | 信号量

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