完全二叉树

定义:
按层序遍历(从上到下,从左到右)填充节点。
除了最后一层外,其余各层必须全满。
最后一层的节点必须 连续靠左。
完全二叉树不一定是满二叉树。
满二叉树 (Full Binary Tree):每个节点都有 0 或 2 个孩子。
完全二叉树:强调节点填充的顺序,不要求“必须两个孩子”。
我之前在做题的时候就混淆了这两个概念。

完全二叉树的性质

节点数量范围
高度为 h 的完全二叉树(根为第 1 层)
节点数最少:2^(h-1)
节点数最多:2^h - 1
节点位置编号规律(堆存储思想):
如果根节点编号是 1
左孩子 = 2i
右孩子 = 2
i + 1
父节节点 = i/2(向下取整)
从0开始父亲节点的下标是(i-1)/2
叶子节点分布
只可能出现在最后一层,或者最后两层。
且最后一层的叶子必须集中在最左边。
数组存储最优
因为节点编号连续 → 可以直接用数组下标表示节点位置(堆就是这样做的)。
节省指针存储空间,也方便随机访问。
注意得到父亲节点的方法

完全二叉树的应用

堆 (Heap)
二叉堆(最大堆、最小堆)就是基于完全二叉树的顺序存储实现的。
优先队列就是堆的典型应用。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java初学基础】⭐Object()顶级父类与它的重要方法equals()

object类常见方法/*** native 方法&#xff0c;用于返回当前运行时对象的 Class 对象&#xff0c;使用了 final 关键字修饰&#xff0c;故不允许子类重写。*/ public final native Class<?> getClass() /*** native 方法&#xff0c;用于返回对象的哈希码&#xff0c;主…

用深度学习(LSTM)实现时间序列预测:从数据到闭环预测全解析

用深度学习&#xff08;LSTM&#xff09;实现时间序列预测&#xff1a;从数据到闭环预测全解析 时间序列预测是工业、金融、环境等领域的核心需求——小到预测设备温度波动&#xff0c;大到预测股价走势&#xff0c;都需要从历史数据中挖掘时序规律。长短期记忆网络&#xff08…

gpu-z功能介绍,安装与使用方法

GPU-Z 功能介绍、安装与使用方法 一、核心功能 硬件信息检测 识别显卡型号、制造商、核心架构&#xff08;如NVIDIA Ada Lovelace、AMD RDNA 3&#xff09;、制造工艺&#xff08;如5nm、7nm&#xff09;。显示显存类型&#xff08;GDDR6X、HBM2e&#xff09;、容量、带宽及显…

数据搬家后如何处理旧 iPhone

每年&#xff0c;苹果都会推出新款 iPhone&#xff0c;激发了人们升级到 iPhone 17、iPhone 17 Pro、iPhone 17 Pro Max 或 iPhone Air 等新机型的热情。但在获得新 iPhone 之前&#xff0c;有一件重要的事情要做&#xff1a;将数据从旧 iPhone 转移到新设备。虽然许多用户都能…

Java关键字深度解析(上)

这是一份全面的Java关键字实战指南 目录 1.数据类型关键字:内存布局与性能优化 1.1 基础类型的内存密码 byte-内存的极简主义者 int-Java世界的万能钥匙 long - 时间与ID的守护者 1.2 引用类型的架构设计 String-不是关键字但胜于关键字 2.访问修饰符:企业级权限控制 …

C语言深度解析:指针数组与数组指针的区别与应用

目录 1 引言&#xff1a;从名字理解本质区别 2 指针数组&#xff1a;灵活管理多个指针 2.1 基本概念与声明方式 2.2 内存布局与特性 2.3 典型应用场景&#xff1a;字符串数组与多维度数据管理 2.3.1 静态分配示例&#xff1a;字符串数组 2.3.2 动态分配示例&#xff1a;…

Node.js 高级应用:负载均衡与流量限制

在当今高并发的网络应用环境中&#xff0c;如何有效地分配服务器资源并保护系统免受恶意攻击是开发者必须面对的重要问题。Node.js 作为一款广受欢迎的服务器端 JavaScript 运行时环境&#xff0c;提供了丰富的工具和模块来应对这些挑战。本文将深入探讨如何在 Node.js 中实现负…

信任链验证流程

信任链验证流程 (The Chain of Trust)整个过程就像一场严格的接力赛&#xff0c;每一棒都必须从可信的上一位手中接过接力棒&#xff08;信任&#xff09;&#xff0c;验证无误后&#xff0c;再跑自己的那段路&#xff0c;并把信任传递给下一棒现在&#xff0c;我们来详细解读图…

黄昏时刻复古胶片风格人像风光摄影后期Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色教程这套 黄昏时刻复古胶片风格人像风光摄影后期 Lr 调色方案&#xff0c;以落日余晖为核心色彩元素&#xff0c;加入复古胶片质感&#xff0c;让画面充满温暖与怀旧氛围。整体色调偏向橙红与青绿的互补对比&#xff0c;天空的夕阳光影与人像肤色相互映衬&#xff0c;既有胶…

硬件驱动——I.MX6ULL裸机启动(3)(按键设置及中断设置

重点&#xff1a;1.GIC&#xff1a;&#xff08;Generic Interrupt Controller&#xff09;通用中断控制器&#xff0c;是ARM架构中用于管理中断的核心模块&#xff0c;主要用于现代多核处理器系统。它负责接收&#xff0c;分发并分发中断请求&#xff0c;减轻CPU负担&#x…

用deepseek对GPU服务器进行压力测试

利用 DeepSeek 模型对 GPU 服务器进行压力测试&#xff0c;核心思路是通过模拟高负载的模型推理 / 微调任务&#xff0c;验证 GPU 服务器在计算、显存、网络等维度的承载能力&#xff0c;同时观察稳定性与性能瓶颈。以下是具体的测试方案&#xff0c;涵盖测试环境准备、核心测试…

ARM(7)IMX6ULL 按键控制(轮询 + 中断)优化工程

一、硬件介绍1. 开关功能定义共 3 个开关&#xff08;两红一黄&#xff09;&#xff0c;功能分工明确&#xff1a;中间开关&#xff1a;复位按钮左边开关&#xff1a;低功耗按钮右边开关&#xff1a;用户独立控制的试验按键&#xff08;核心控制对象&#xff09;2. 核心电平逻辑…

【QT随笔】什么是Qt元对象系统?Qt元对象系统的核心机制与应用实践

【QT随笔】什么是Qt元对象系统&#xff1f;Qt元对象系统的核心机制与应用实践 之所以写下这篇文章&#xff0c;是因为前段时间自己面试的时候被问到了&#xff01;因此想借此分享一波&#xff01;&#xff01;&#xff01;本文主要详细解释Qt元对象系统的概念、作用及实现机制…

从技术视角解析加密货币/虚拟货币/稳定币的设计与演进

随着加密货币行情的持续走高&#xff0c;除了资产价值&#xff0c;我想试着从底层程序设计与架构角度解析比特币、以太坊、稳定币以及新兴公链的核心技术方案。作者在2018年设计实施了基于区块链技术的金融项目&#xff0c;并荣获了国家课题进步奖&#xff0c;对加密货币及场景…

[MySQL]Order By:排序的艺术

[MySQL]Order By&#xff1a;排序的艺术 1. 简介 在数据库管理中&#xff0c;数据的排序是一项至关重要的操作。MySQL 的 ORDER BY 子句为我们提供了强大而灵活的功能&#xff0c;用于对查询结果进行排序。无论是按照字母顺序排列名称&#xff0c;还是根据日期或数值进行升序…

【工具代码】使用Python截取视频片段,截取视频中的音频,截取音频片段

目录 ■截取视频方法 1.下载 ffmpeg-8.0-essentials_build 2.配置到环境变量 3.python代码 4.运行 5.效果 ■更多 截取视频中的音频 截取音频 Sony的CR3图片&#xff0c;转换为JPG ■截取视频方法 1.下载 ffmpeg-8.0-essentials_build "https://www.gyan.de…

Three.js 平面始终朝向相机

instanceMesh需要让实例像粒子一样始终朝向相机 可以如下处理shaderexport const billboarding // billboarding函数的GLSL实现 // 参数: // - position: 顶点动态位置偏移 // - positionLocal: mesh的position // - horizontal: 水平方向是否朝向相机 // - vertical: 垂直方…

旗讯 OCR 识别系统深度解析:一站式解决表格、手写文字、证件识别难题!

在数字化办公日益普及的今天&#xff0c;“纸质文档转电子”“图片信息提取” 等需求愈发频繁&#xff0c;但传统手动录入不仅效率低下&#xff0c;还容易出现数据错误。近期发现一款实用性极强的工具 —— 旗讯数字 OCR 识别系统&#xff0c;其覆盖多场景的识别功能、极简操作…

MissionPlanner架构梳理之(十四)日志浏览

概述和目的 Mission Planner 中的日志浏览系统提供了加载、查看、分析和解读 ArduPilot 驱动的飞行器生成的飞行日志的工具。飞行日志包含飞行操作期间记录的关键遥测数据&#xff0c;使用户能够查看飞行性能、诊断问题并从过去的飞行中获取见解。 本页记录了日志浏览系统的架…

机器学习shap分析案例

在进行数据分析和机器学习时经常用到shap&#xff0c;本文对shap相关的操作进行演示。波士顿数据集链接在这里。 SHAP Analysis Guide Set up 导入必要包 import pandas as pd import numpy as np import lightgbm as lgb import matplotlib import matplotlib.pyplot as p…