树与二叉树堆:二叉树

news2024/9/29 15:34:58

二叉树的概念:

二叉树是树的一种,二叉树是一个节点,最多只有两个子节点,二叉树是一个特殊的树二叉树的度最大为2

从上图可得一棵二叉树是结点的一个有限集合,该集合:

  1. 或者为空
  2. 由一个根结点加上两棵别称为左子树和右子树的二叉树组成

 二叉树的分类:

  • 二叉树分为完全二叉树和满二叉树。

满二叉树:

在二叉树的基础上,在规定的层数中,每一层都保持了最大的度,或者说每一层都是排满了结点。

                     

  • 如上图所示,在满二叉树中,结点的个数和二叉树的高度是一个等差数列的关系。 

 完全二叉树:

 满二叉树的演变如果是H的层数,那么H-1层是满的,而最后一层不一定是满的,如下图所示。

                                  

错误案例:

 

完全二叉树的高度和结点关系:

  • 由于完全二叉树的最后一层是不确定的,所以完全二叉树的结点个数其实是一个动态区间关系
  • 而假设完全二叉树的高度是h,那么h-1层的结点个数和满二叉树的结点个数算法一致
  • 而最后一层的结点个数根据推论是在1到 2^(h-1)之间
  • 所以完全二叉树的结点个数和高度关系是:[:2^(h-1), 2^h-1]
  • 完全二叉树的结点个数也是[:2^(h-1), 2^h-1]

二叉树的存储方式:

数组存储: 

                                                    

如图所示,数组存储是一层一层的进行存储,先左后右先上后下,而数组存储只能适用于满二叉树。 

如果存储到数组中,怎么找到孩子结点对于的下标呢?

  •  左孩子结点的下标 = 父亲结点的下标  *  2 +1  ,右孩子结点下标 = 父亲结点的下标  *  2 +2

知道孩子怎么算父亲节点下标?

  • (孩子结点的下标-1 ) /   2 

未完待续........................................... 


 

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

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

相关文章

【软考】文件的组织结构

目录 一、说明二、逻辑结构2.1 说明2.2 记录式文件2.2.1 说明2.2.2 顺序文件2.2.3 索引文件2.2.4 索引文件 2.3 流式文件 三、物理结构3.1 说明3.2 链接方式之隐式链接3.3 链接方式之显式链接 一、说明 1.组织结构是文件的组织形式。 2.逻辑结构为用户可见的的文件结构。 3.物理…

8Base集团通过SmokeLoader部署新的Phobos勒索软件变种

最近,8Base集团的威胁行为者通过Phobos勒索软件的变种展开了一系列金融动机的攻击。这一发现来自于思科Talos的研究结果,他们记录了网络犯罪分子活动的增加。 安全研究员Guilherme Venere在周五发表的详尽的两部分分析中表示:“该组织的大多…

OpenGL_Learn14(光照贴图)

1. 漫反射贴图 在光照场景中,它通常叫做一个漫反射贴图(Diffuse Map)(3D艺术家通常都这么叫它),它是一个表现了物体所有的漫反射颜色的纹理图像。 我们会将纹理储存为Material结构体中的一个sampler2D 。我们将之前定义的vec3漫反…

元素定位与选择器

元素定位与选择器 做元素定位时,你是否曾遇到过以下难题 元素 ID 或 class 是动态生成的你使用了 CSS选择器去定位,但开发把元素CSS样式改掉了 这种情况下通常会测试失败 Cypress 如何解决上述难题 提供了 data-* 属性,包含了下面三个定…

阿里8年经验之谈 —— 分享一次接口性能摸底测试过程!

接口性能测试是用于验证应用程序中的接口是否可以满足系统的性能要求的一种测试方法。确定应用程序在各种负载条件下的性能指标,例如响应时间、吞吐量、并发性能等,以便提高系统的性能和可靠性。本文主要讲述接口性能测试从前期准备、方案设计到环境搭建…

数字化转型导师坚鹏:数字化时代银行网点厅堂营销5大关键点分析

数字化时代银行网点厅堂营销需要抓住以下5大关键点: 1、精准识别客户:在数字化时代,银行网点厅堂营销的关键在于精准识别客户。通过利用大数据和人工智能技术,银行可以分析客户的行为和需求,从而更好地了解客户&#…

Win10 电源选项那选择“关闭显示器“为1分钟,1分钟后就锁屏了?怎么才能关闭显示器后不锁屏

环境: Win10专业版 问题描述: Win10 电源选项那选择"关闭显示器"为1分钟,1分钟后就锁屏了?怎么才能关闭显示器后不锁屏 解决方案: 方法一 更改注册表可以实现关闭显示器而不锁屏的效果。请按照以下步骤…

雷电模拟器报错:g_bGuestPoweroff.fastpipeapi. cpp_1153_1161

文章目录 一、报错详情:二、解决:【1】设置Windows功能【2】设置cmd(管理员身份)【3】重启电脑 三、windows10其中1809版本出现1153、1161,需要关闭内核隔离 一、报错详情: 二、解决: 【1】设置…

go语言学习之旅之Go 语言指针

学无止境,今天继续学习go语言的基础内容 Go语言支持指针,允许你在程序中直接操作变量的内存地址。指针存储了变量的内存地址,通过指针,你可以直接访问或修改该地址上的值。 学习过c语言的一定知道指针 定义指针 在Go语言中&…

卷积神经网络(ResNet-50)鸟类识别

文章目录 卷积神经网络(CNN)mnist手写数字分类识别的实现卷积神经网络(CNN)多种图片分类的实现卷积神经网络(CNN)衣服图像分类的实现卷积神经网络(CNN)鲜花的识别卷积神经网络&#…

芯片IO口不加电阻会怎样?

芯片IO口不加电阻会怎样? 可能会导致以下几个后果: 1.高电流问题,IO口没有电阻限流,当与外部设备直接连接时,就可能会导致过大的电流流过IO口,这就可能损坏IO口,引起短路或烧坏其它电路组件。像…

设计模式-访问者模式-笔记

Visitor模式 动机(Morivation) 在软件构建过程中,由于需求的变化,某些类层次结构中常常需要增加新的行为(方法),如果直接在基类中做这样的更改,将会给子类带来很繁重的变更负担&am…

4. Pandas行列操作

4.1 新增列 4.1.1 assign Pandas中的assign()函数不仅可以实现不改变原数据情况下新增列,而且可以同时新增多列,还可以配合链式操作使用一行代码完成多个新增列创建,使得代码非常整洁。 (1)函…

【GitHub】保姆级使用教程

一、如何流畅访问GitHub 1、网易uu加速器 输入网址,无脑下载网易加速器;https://uu.163.com/ 下载安装完毕后,创建账号进行登录 登录后,在右上角搜索框中搜索“学术资源”,并点击; 稍等一会儿就会跳…

如何使用SD-WAN提升物流供应链网络效率

案例背景 本次分享的物流供应链企业是一家国际性的大型企业,专注于提供全球范围内的物流和供应链解决方案。案例用户在不同国家和地区均设有多个分支机构和办公地点,以支持客户需求和业务运营。 在过去,该企业用户使用传统的MPLS网络来连接各…

微信小程序知识付费平台,公众号App+SAAS+讲师端,多端部署

三勾知识付费系统基于thinkphp8element-plusuniapp打造的面向开发的知识付费系统,方便二次开发或直接使用,可发布到多端,包括微信小程序、微信公众号、QQ小程序、支付宝小程序、字节跳动小程序、百度小程序、android端、ios端。 功能包含直播…

2023 最新 PDF.js 在 Vue3 中的使用(长期更新)

因为自己写业务要定制各种 pdf 预览情况(可能),所以采用了 pdf.js 而不是各种第三方封装库,主要还是为了更好的自由度。 一、PDF.js 介绍 官方地址 中文文档 PDF.js 是一个使用 HTML5 构建的便携式文档格式查看器。 pdf.js 是社区…

scala的schema函数(算子)

在翻阅一些代码的时候,schema算子好像没碰到过,比较好奇structField这个类型,为什么可以直接用name参数,就翻阅了下资料: 在 Apache Spark 中,DataFrame 是一种分布式的数据集,它是以类似于关系…

SO3 与so3 SE3与se3 SIM3

文章目录 1 旋转*叉乘1.1 旋转矩阵的导数1.2 物理意义1.3 实例1.4 角轴与反对称矩阵 2 SO3 与so32.1 so3 2 SO32.2 SO3 2 so3 3 SE3 与se33.1 se3 2 SE3:3.2 SE3 2 se3 4 SIM3 与sim35 Adjoint Map 1 旋转*叉乘 1.1 旋转矩阵的导数 根据旋转矩阵的性质: R R T I …

ANSYS中如何手动为装配体添加接触约束教程

接触的类型: 在接触类型(Type)选项中,软件共提供了绑定接触(Bonded)、不分离接触(No Separation)、无摩擦接触(Frictionless)、粗糙接触(Rough&a…