算法题目中图和树的存储

邻接表的方式存储图和树

在这里插入图片描述

在这里插入图片描述

这就是邻接表,就是将每个结点的孩子结点用链表表示出来,再将所有结点以数组形式连起来。

存储树和图我们需要三个数组,h[N], e[N], ne[N],分别表示邻接表,结点值,结点的next值,h[i]是以i为父节点的最后一个插入的结点的地址,e[i]是i结点的序号,next[i]是i的下一个结点的地址。还需要一个变量idx,表示当前需要插入的结点。

例如我们现在有一个需求是将2号结点插入到1号结点下面,变成它的孩子结点。
请添加图片描述
这就是我们的思路,h数组初始值都为-1,因为没有插入结点(-1就代表空)。
先让2号结点的next值为-1,然后h[1]指向2号结点,这样他们三个就连成一串了。
抽象的用代码实现一下

a->b
void add(int a, int b){e[idx] = b;ne[idx] = h[a];h[a] = idx;idx ++;
}

这个函数就可以为我们实现添加一条边。

文章参考:https://www.cnblogs.com/linfangnan/p/12745834.html

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

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

相关文章

python3内置函数range()心得

python3内置函数range()心得 本文环境:Win 7 (64-bit) python 3.7.6 (32 bit) Thonny 3.2.6 概念 range()是python 3的内置函数(Built-in Functions),它返回一个 range 对象的整数序列,可以设定这个序列的起点、终…

Google开源工具类库Guava介绍

Guava 是由 Google 开发和维护的一组开源的 Java 库,它提供了许多 Google 内部 Java 项目依赖的核心库。Guava 库包含了大量用于集合、缓存、支持原语操作、并发库、通用注解、字符串处理、I/O 等等的实用工具类和增强功能。使用 Guava 可以帮助开发者写出更加简洁、…

互联设备-中继器-路由器等

网卡的主要作用 1 在发送方 把从计算机系统要发送的数据转换成能在网线上传输的bit 流 。 2 在接收方 把从网线上接收来的 bit 流重组成计算机系统可以 处理的数据 。 3 判断数据是否是发给自己的 4 发送和控制计算机系统和网线数据流 计算机的分类 1、台式机 2、小型机和服…

多维时序 | Matlab实现CPO-BiTCN-BiGRU冠豪猪优化时间卷积神经网络双向门控循环单元多变量时间序列预测模型

多维时序 | Matlab实现CPO-BiTCN-BiGRU冠豪猪优化时间卷积神经网络双向门控循环单元多变量时间序列预测模型 目录 多维时序 | Matlab实现CPO-BiTCN-BiGRU冠豪猪优化时间卷积神经网络双向门控循环单元多变量时间序列预测模型预测效果基本介绍程序设计参考资料 预测效果 基本介绍…

【vue】provide/inject

provide/ inject这对选项需要一起使用,以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效。 通途点来讲可以用来实现隔代传值,传统的props只能父传子,而 prov…

ThreeJS 几何体顶点position、法向量normal及uv坐标 | UV映射 - 法向量 - 包围盒

文章目录 几何体的顶点position、法向量normal及uv坐标UV映射UV坐标系UV坐标与顶点坐标设置UV坐标案例1:使用PlaneGeometry创建平面缓存几何体案例2:使用BufferGeometry创建平面缓存几何体 法向量 - 顶点法向量光照计算案例1:不设置顶点法向量…

python 3.7.3的安装

参考 Linux安装Python3.7-良许Linux教程网 (lxlinux.net) 1、Index of /ftp/python/3.7.9/ 1、安装gcc,yum -y install gcc 2、 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel…

记录 re:Invent 大会,使用 PartyRock 编写我们第一个 AI 应用以及心得

如果说 2023 年什么应用技术最火,那么说是 OpenAI 为代表的 ChatGPT 在 AI 方面的突破和发展,是完全没有任何的争议的。 随后,各大云厂商以及应用集成商甚至垂直领域的服务提供商都有了对应的 AI 模型。我们开玩笑的说,这个好比多…

Windows 远程控制 Mac 电脑怎么操作

要从 Windows 远程控制 Mac 电脑,您可以使用内置 macOS 功能或第三方软件解决方案。以下是一些方法: 一、使用内置 macOS 功能(屏幕共享) 1、在 macOS 上启用屏幕共享 转至系统偏好设置 > 共享;选中“屏幕共享”…

ISO26262 --- FSC功能安全概念

一、目的 a)按照安全目标,定义相关项功能行为或降级的功能行为 b)按照安全目标,定义用于合理,及时地探测和控制相关故障的约束条件 c)定义相关项层面的策略或者措施,通过相关项自身,驾驶员或外部措施来实现要求的故…

【微服务生态】Elasticsearch

文章目录 一、概述二、下载和部署2.1 单机部署2.2 集群部署2.2.1 环境配置2.2.2 安装及部署 三、基本操作3.1 概述3.2 HTTP 操作3.2.1 索引操作3.2.2 文档操作3.2.3 关系映射3.2.4 高级查询 3.3 Java API 操作 四、Elasticsearch 进阶4.1 核心概念4.2 系统架构4.3 分布式集群4.…

02_第二章 HTMLCSS

文章目录 第二章 HTML&CSS一 HTML入门1.1 HTML&CSS&JavaScript的作用1.2 什么是HTML1.3 什么是超文本1.4 什么是标记语言1.5 HTML基础结构1.6 HTML的入门程序1.7 HTML概念词汇解释1.8 HTML的语法规则1.9 开发工具VsCode的安装和使用1.10 在线帮助文档 二 HTML常见标…

Phind-70B-运行速度提高4倍的同时,缩小了与GPT-4 Turbo在代码质量上的差距

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

「Web架构模式」模式:前端的后端(BFF)

面向用户界面和外部方的单用途边缘服务 介绍 随着web的出现和成功,交付用户界面的实际方式已经从厚客户端应用程序转变为通过web交付的界面,这一趋势也使基于SAAS的解决方案总体上得以发展。通过web提供用户界面的好处是巨大的——主要是因为发布新功能的…

CMake管理CUDA并使用cuSOLVER等

一、出现问题 我在使用官方案例的时候,使用VS2022CMake管理编译的时候出现如下的错误: 官方CMakeLists.txt: cmake_minimum_required(VERSION 3.9)set(ROUTINE bicgstab)project("${ROUTINE}_example"DESCRIPTION "GPU-Acce…

软件版本号解读(语义化SemVer、日历化CalVer及标识符)

1. 版本控制规范 1.1. 语义化版本(SemVer) 版本格式:主版本号.次版本号.修订号,版本号递增规则: 主版本号(MAJOR version):添加了不兼容的 API 修改,次版本号(MINOR version):添加…

第3部分 原理篇2去中心化数字身份标识符(DID)(3)

3.2.2.4. DID文档 (DID Document) 本聪老师:DID标识符和DID URL还都只是ID,必须为它附加一个基本属性才可以证明是该主体独有的。这个就是我们下面介绍的DID文档。 本聪老师:每个DID标识符都唯一对应一个DID文档,也可以说&#x…

【前端素材】推荐优质后台管理系统Symox模板(适用电商,附带源码)

一、需求分析 后台管理系统是一种用于管理网站、应用程序或系统的工具,它通常作为一个独立的后台界面存在,供管理员或特定用户使用。下面详细分析后台管理系统的定义和功能: 1. 定义 后台管理系统是一个用于管理和控制网站、应用程序或系统…

【C语言】内存操作,内存函数篇---memcpy,memmove,memset和memcmp内存函数的使用和模拟实现【图文详解】

欢迎来CILMY23的博客喔,本篇为​【C语言】内存操作,内存函数篇---memcpy,memmove,memset和memcmp内存函数的使用和模拟实现【图文详解】,图文讲解四种内存函数,带大家更深刻理解C语言中内存函数的操作&…