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

【LeetCode】七、树、堆、图

文章目录

  • 1、树结构
  • 2、二叉树
  • 3、二叉树的遍历
  • 4、堆结构(Heap)
  • 5、堆化
  • 6、图

1、树结构

节点、根节点、叶子节点:

在这里插入图片描述

高度、深度、层三者的示意图:

在这里插入图片描述

2、二叉树

相比其他树,二叉树即每个节点最多两个孩子(两个分支):
在这里插入图片描述

如下图:满二叉树一定是完全二叉树,完全二叉树却不一定是满二叉树

在这里插入图片描述

补充:上面对满二叉树的定义不准确,满二叉树还要满足:所有的叶子节点在同一层

在这里插入图片描述

以上这个,虽然满足:除了叶子节点,每个节点都有两个孩子,但不满足所有叶子节点都在同一层,因此不是满二叉树。

3、二叉树的遍历

  • 前序遍历,即根节点在前:前左右
  • 中序遍历,即根节点在中:左中右
  • 后序遍历,即根节点在后:左右后
    在这里插入图片描述

如下:整个树看成三块,A、A的左子树、A的右子树,在两块子树里,继续按中序的左根右遍历,结果就是:D ⇒ B ⇒ E ⇒ A ⇒ F ⇒ C ⇒ G

在这里插入图片描述
在这里插入图片描述

同理,如果下面还有,那就继续分:

在这里插入图片描述

一句话,从根节点入手,把整个树看成左、根、右三大块,按左根右中序遍历,左右每块子树里,按子树的根节点继续分成左、根、右三大块,每块子树里依旧按照左根右中序遍历

4、堆结构(Heap)

堆即一种二叉树:完全二叉树。前面提到完全二叉树即从上到下、从左到右依次填满的二叉树,即可以左上有节点而右下无节点(图A、B),但:

  • 不能同一层左边无节点,但右边有节点(图C),这样不满足从左到右,不是完全二叉树
  • 不能同一层,左边有节点,但右边无节点,但下一层左边又有节点(图D),这样不满足从上到下,不是完全二叉树

在这里插入图片描述
堆有两个特点:

  • 首先得是一个完全二叉树
  • 其次,每个节点 >= 其所有孩子节点 (最大堆),或, 每个节点 <= 其所有孩子节点 (最小堆)

对最大堆,堆顶元素是整个堆的最大值,对最小堆,堆顶元素是整个堆的最小值

在这里插入图片描述
在这里插入图片描述

堆的时间复杂度:

在这里插入图片描述

比如删除一个最小堆的根节点:

在这里插入图片描述
干掉1以后,把右下角的7放上来,先保持完全二叉树的结构:

在这里插入图片描述
再向下比较,把7放到该放的位置。这是个最小堆,因此,先将7和最小的孩子节点2交换:

在这里插入图片描述
又发现7比孩子节点4和5打,因此,再把7和最小的孩子节点4交换,删除完成:

在这里插入图片描述

5、堆化

堆化,即把一组无序的数加到堆里去。可先把一组数转成完全二叉树,再将完全二叉树调整为最大堆或者最小堆。

如下,一个数组转为一个完全二叉树,其结果是唯一的(遍历数组,从上到下、从左到右的摆放),即0号元素当根节点,后面两个1、2号元素当根节点的左右子节点,3、4、5、6号元素分别当1、2号元素所在节点的左右子节点
在这里插入图片描述

将这个二叉树转为最小堆,核心思想是:把每个节点和其孩子节点进行对比,看每个节点是否满足:值小于等于任何它的一个子节点,不满足时,则把该节点和其最小的孩子节点交换

因为叶子节点没有子节点,所以从倒数第二层开始看:9和7两个节点,9符合条件,均小于其两个子节点,7则不符,因此,7和5交换:

在这里插入图片描述

交换完成,再往上看上一层:10 > 5 也 10 > 9,选更小的5这个节点交换:

在这里插入图片描述
同理,换完后,第二层不再满足最小堆,需要再交换,10 > 8 也有 10 > 7,选最小的7这个节点进行交换。

6、图

和树的父子关系相比,图则类似邻居关系。对于图,有一个度的概念(degree),如下,顶点上有两条边与其相连,该顶点的度为2
在这里插入图片描述
分类:

在这里插入图片描述
前面提到了顶点的度,对于有向图,则是:

  • 入度:指向该顶点的边的数量
  • 出度:从该顶点出发的边的数量

如下:丁节点,入度为2,出度为0

在这里插入图片描述
再说权重图:如下,求杭州到北京的最短路径

在这里插入图片描述

相关文章:

【LeetCode】七、树、堆、图

文章目录 1、树结构2、二叉树3、二叉树的遍历4、堆结构&#xff08;Heap&#xff09;5、堆化6、图 1、树结构 节点、根节点、叶子节点&#xff1a; 高度、深度、层三者的示意图&#xff1a; 2、二叉树 相比其他树&#xff0c;二叉树即每个节点最多两个孩子&#xff08;两个分…...

FPGA PCIe加载提速方案

目录 1.bit流压缩 2.flash加载速度 3.Tandem模式 1.bit流压缩 set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design] 2.flash加载速度 打开bitstream setting&#xff0c;设置SPI的线宽和速率&#xff08;线宽按原理图设置&#xff0c;速率尽可能高&#xff09…...

Hi3861 OpenHarmony嵌入式应用入门--轮询按键

本篇介绍使用轮询方式读取gpio状态来判断按键状态。 原理图如下 GPIO API API名称 说明 hi_u32 hi_gpio_init(hi_void); GPIO模块初始化 hi_u32 hi_io_set_pull(hi_io_name id, hi_io_pull val); 设置某个IO上下拉功能。 hi_u32 hi_gpio_set_dir(hi_gpio_idx id, hi_gpi…...

js,uni 自定义 时间选择器 vue2

<template><view class"reserve-time-box"><view class"title">选择时间</view><view class"date-box"><view class"date-scroll-box" :style"{ width : ${dataTimeWidth}rpx }"><v…...

搜索引擎的原理与相关知识

搜索引擎是一种网络服务&#xff0c;它通过互联网帮助用户找到所需的信息。搜索引擎的工作原理主要包括以下几个步骤&#xff1a; 网络爬虫&#xff08;Web Crawler&#xff09;&#xff1a;搜索引擎使用网络爬虫&#xff08;也称为蜘蛛或机器人&#xff09;来遍历互联网&#…...

React:tabs或标签页自定义右击菜单内容,支持内嵌iframe关闭菜单方案

React&#xff1a;tabs或标签页自定义右击菜单内容&#xff0c;支持内嵌iframe关闭菜单方案 不管是react、vue还是原生js&#xff0c;原理是一样的。 注意如果内嵌iframe情况下&#xff0c;iframe无法使用事件监听&#xff0c;但是可以使用iframe的任何点击行为都会往父级wind…...

Taro +vue3 中的微信小程序中的分享

微信小程序 右上角分享 的触发 以及配 useShareAppMessage(() > {return {title: "电影属全国通兑券",page: /pages/home/index,imageUrl: "http:///chuanshuo.jpg",};}); 置 就是Taro框架中提供的一个分享Api 封装好的...

视频监控EasyCVR视频汇聚/智能边缘网关:EasySearch无法探测到服务器如何处理?

安防监控EasyCVR智能边缘网关/视频汇聚网关/视频网关属于软硬一体的边缘计算硬件&#xff0c;可提供多协议&#xff08;RTSP/RTMP/国标GB28181/GAT1400/海康Ehome/大华/海康/宇视等SDK&#xff09;的设备接入、音视频采集、视频转码、处理、分发等服务&#xff0c;系统具备实时…...

openlayer 鼠标点击船舶,打开船舶简单弹框

背景&#xff1a; 对创建的地图对象&#xff0c;可以添加上监听事件&#xff0c;常用的有&#xff1a;地图点击事件、鼠标移动事件。 通过监听这些事件&#xff0c;又可以区分不同图层的不同要素&#xff0c;获取不同数据&#xff1b; 根据这些数据&#xff0c;又可以发起网络请…...

数据挖掘常见算法(关联)

Apriori算法 Apriori算法基于频繁项集性质的先验知识&#xff0c;使用由下至上逐层搜索的迭代方法&#xff0c;即从频繁1项集开始&#xff0c;采用频繁k项集搜索频繁k1项集&#xff0c;直到不能找到包含更多项的频繁项集为止。 Apriori算法由以下步骤组成&#xff0c;其中的核…...

vue项目集成CanvasEditor实现Word在线编辑器

CanvasEditor实现Word在线编辑器 官网文档&#xff1a;https://hufe.club/canvas-editor-docs/guide/schema.html 源码地址&#xff1a;https://github.com/Hufe921/canvas-editor 前提声明&#xff1a; 由于CanvasEditor目前不支持vue、react 等框架开箱即用版&#xff0c;所以…...

Redis Stream Redisson Stream

目录 一、Redis Stream1.1 场景1&#xff1a;多个客户端可以同时接收到消息1.1.1 XADD - 向stream添加Entry&#xff08;发消息 &#xff09;1.1.2 XREAD - 从stream中读取Entry&#xff08;收消息&#xff09;1.1.3 XRANGE - 从stream指定区间读取Entry&#xff08;收消息&…...

threadX netx 设置IP地址以及获取IP地址

ThreadX 是一个实时操作系统&#xff08;RTOS&#xff09;内核&#xff0c;而 NetX 则是 Express Logic 提供的一个嵌入式 TCP/IP 网络栈&#xff0c;它经常与 ThreadX 一起使用来提供网络功能。在 ThreadX 和 NetX 中设置和获取 IP 地址通常涉及几个步骤。 设置 IP 地址 初始…...

计算机毕业设计hadoop+spark+hive知识图谱医生推荐系统 医生数据分析可视化大屏 医生爬虫 医疗可视化 医生大数据 机器学习 大数据毕业设计

测试过程及结果 本次对于医生推荐系统测试通过手动测试的方式共进行了两轮测试。 &#xff08;1&#xff09;第一轮测试中执行了个20个测试用例&#xff0c;通过16个&#xff0c;失败4个&#xff0c;其中属于严重缺陷的1个&#xff0c;属于一般缺陷的3个。 &#xff08;2&am…...

lammps已经运算结束,有数据忘记算:rerun 命令

需要的文件 1、模拟运算的所有文件&#xff08;模型 、in文件、力场文件&#xff09; 2、模拟计算所得到的dump文件&#xff08;原子轨迹文件&#xff09; rerun命令的使用&#xff08;修改in文件&#xff09; 1、删除or注释掉 输出dump文件的那一行命令 2、加上需要补充计…...

CARLA自动驾驶模拟器基础

CARLA 使用服务器-客户端架构运行&#xff0c;其中 CARLA 服务器运行模拟并由客户端向其发送指令。客户端代码使用 API 与服务器进行通信。要使用 Python API&#xff0c;您必须通过 PIP 安装该模块&#xff1a; pip3 install carla-simulator # Python 3World and client 客…...

华为HCIP Datacom H12-821 卷16

1.判断题 在 VRRP 中,当设备状态变为 Master 后,,会立刻发送免费 ARP 来刷新下游设备的 MAC 表项,从而把用户的流量引到此台设备上来 A、对 B、错 正确答案: A 解析: 2.判断题 路由选择工具 route- policy 能够基于预先定义的条件来进行过滤并设置 BGP...

Python学习打卡:day17

day17 笔记来源于&#xff1a;黑马程序员python教程&#xff0c;8天python从入门到精通&#xff0c;学python看这套就够了 目录 day17121、Python 操作 MySQL 基础使用pymysql创建到 MySQL 的数据库链接执行 SQL 语句执行非查询性质的SQL语句执行查询性质的SQL语句 122、Pyth…...

Spring Cloud Gateway 与 Nacos 的完美结合

在现代微服务架构中&#xff0c;服务网关扮演着至关重要的角色。它不仅负责路由请求到相应的服务&#xff0c;还承担着诸如负载均衡、安全认证、限流熔断等重要功能。Spring Cloud Gateway 作为 Spring Cloud 生态系统中的一员&#xff0c;以其强大的功能和灵活的配置&#xff…...

vue2 element ui 表单 动态增加表单项 表单项值不可重复 select多选

案例 <template><el-form :model"form" ref"form" label-width"70px"><el-form-item><el-button icon"el-icon-plus" type"primary" plain click"add">新增</el-button><el-b…...

高效配置实战指南:全面掌握Cursor Pro功能解锁的专业部署方案

高效配置实战指南&#xff1a;全面掌握Cursor Pro功能解锁的专业部署方案 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached y…...

AI模型API网关:统一管理多厂商大模型调用,实现高效治理与成本控制

1. 项目概述与核心价值最近在折腾AI应用开发&#xff0c;发现一个挺普遍的问题&#xff1a;当你的应用需要同时调用多个不同厂商的大模型API时&#xff0c;管理起来简直是一场噩梦。每个厂商的接口地址、认证方式、请求格式、计费逻辑都不一样&#xff0c;更别提还有速率限制、…...

铝板椭圆成像无线传输损伤检测【附仿真】

✨ 长期致力于兰姆波、虚拟时间反转、损伤成像、压电陶瓷研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;铝板Lamb波频散特性与压电陶瓷PZT优化&#…...

Credenza:现代化开发凭证管理工具的设计原理与实战应用

1. 项目概述&#xff1a;一个现代化的凭证管理工具 最近在整理自己的开发环境时&#xff0c;又被各种API密钥、数据库密码、服务令牌给搞烦了。这些敏感信息散落在不同的 .env 文件、配置脚本甚至代码注释里&#xff0c;每次换机器或者和新同事协作都得小心翼翼&#xff0c;生…...

告别Windows桌面混乱:NoFences桌面分区工具终极指南

告别Windows桌面混乱&#xff1a;NoFences桌面分区工具终极指南 【免费下载链接】NoFences &#x1f6a7; Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你是否每天都要在堆积如山的桌面图标中寻找需要的应用&#x…...

5分钟掌握中兴光猫配置解密:解决网络维护难题的终极方案

5分钟掌握中兴光猫配置解密&#xff1a;解决网络维护难题的终极方案 【免费下载链接】ZET-Optical-Network-Terminal-Decoder 项目地址: https://gitcode.com/gh_mirrors/ze/ZET-Optical-Network-Terminal-Decoder 你是否曾经面对加密的中兴光猫配置文件束手无策&#…...

Attu架构解析:向量数据库可视化管理的企业级解决方案

Attu架构解析&#xff1a;向量数据库可视化管理的企业级解决方案 【免费下载链接】attu The Best GUI for Milvus 项目地址: https://gitcode.com/gh_mirrors/at/attu 在AI原生应用快速发展的今天&#xff0c;向量数据库已成为处理高维向量数据的核心技术基础设施。然而…...

Java统一AI SDK实战:集成OpenAI、Claude、Gemini多模型API

1. 项目概述与核心价值 最近在折腾一个需要集成多个大模型API的Java项目&#xff0c;从OpenAI到Claude再到Google Gemini&#xff0c;每个厂商的SDK调用方式、请求体结构、错误处理都不太一样&#xff0c;光是写适配代码就够喝一壶的。更别提还要处理流式响应、文件上传、Func…...

【粉丝福利社】三维重建技术与实践:基于NeRF与3DGS

&#x1f48e;【行业认证权威头衔】 ✔ 华为云天团核心成员&#xff1a;特约编辑/云享专家/开发者专家/产品云测专家 ✔ 开发者社区全满贯&#xff1a;CSDN博客&商业化双料专家/阿里云签约作者/腾讯云内容共创官/掘金&亚马逊&51CTO顶级博主 ✔ 技术生态共建先锋&am…...

STM32L4 RTC唤醒中断实战:用CubeIDE配置30秒低功耗定时,实测两种模式差异

STM32L4 RTC唤醒中断实战&#xff1a;用CubeIDE配置30秒低功耗定时&#xff0c;实测两种模式差异 在电池供电的嵌入式设备开发中&#xff0c;精准的周期性任务调度与极致的功耗控制往往是一对需要权衡的技术矛盾。STM32L4系列凭借其出色的低功耗特性与灵活的RTC模块&#xff0c…...