数据结构—基础知识(13):树的存储结构
数据结构—基础知识(13):树的存储结构
-
双亲表示法
这种表示方法中,以一组连续的存储单元存储树的结点,每个结点除了数据域data外,还附设一个parent域用以指示其双亲结点的位置。

这种存储结构利用了每个结点(除根结点外)只有唯一的双亲性质。这种存储结构下,求结点的双亲十分方便,也很容易求树的根,但求结点的孩子时需要遍历整个结构。
-
孩子表示法
由于树中每个结点可能有多棵子树,则可用多重链表,即每个结点有多个指针域,其中每个指针指向一棵子树的根结点,此时链表中的结点可以有如下图的两种结点格式。

若采用第一种结点格式,则多重链表中的结点是同构的,其中d为树的度。由于树中很多结点的度小于 d,所以链表中有很多空链域,空间较浪费,不难推出,在一棵有n个结点度为k的树中必有n(k-1)+1 个空链域。
若采用第二种结点格式,则多重链表中的结点是不同构的,其中d为结点的度,degree 域的值同d。此时,虽能节约存储空间,但操作不方便。
另一种办法是,把每个结点的孩子结点排列起来,看成是一个线性表,且以单链表做存储结构,则n个结点有n个孩子链表(叶子的孩子链表为空表)。而n个头指针又组成一个线性表,为了便于查找,可采用顺序存储结构。
下图(a)所示为下图中的树的孩子表示法。与双亲表示法相反,孩子表示法便于那些涉及孩子的操作的实现。可以把双亲表示法和孩子表示法结合起来,即将双亲表示和孩子链表合在一起。图(b)所示的就是这种存储结构的一例,它和图(a)表示的是同一棵树。

-
孩子兄弟法
孩子兄弟法又称二叉树表示法,或者二叉链表表示法,即以二叉链表做树的存储结构。链表中结点的两个链域分别指向该结点的第一个孩子结点(firstchild)和下一个兄弟结点(nextsibling)
//------树的二叉链表(孩子—兄弟)存储表示------ typedef struct CSNode{ElemType data;struct CSNode *firstchild,*nextsibling; }CSNode,*CSTree;

相关文章:
数据结构—基础知识(13):树的存储结构
数据结构—基础知识(13):树的存储结构 双亲表示法 这种表示方法中,以一组连续的存储单元存储树的结点,每个结点除了数据域data外,还附设一个parent域用以指示其双亲结点的位置。 这种存储结构利用了每个结…...
【Python爬虫入门到精通】小白也能看懂的知识要点与学习路线
文章目录 1. 写在前面2. 爬虫行业情况3. 学习路线 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】:对JS逆向感兴趣的朋友可以关…...
服务器数据恢复—EVA存储raid5硬盘离线的数据恢复案例
服务器数据恢复环境: 某品牌EVA某型号存储,底层是RAID5阵列,划分了若干lun。 服务器故障&分析: 该存储设备中raid5阵列有两块硬盘掉线,存储中的lun丢失。 将故障服务器存储中的所有磁盘编号后取出,硬件…...
MAMBA论文疑被拒收,计算机科学顶会评审遭质疑
2023 年底,卡内基梅隆和普林斯顿大学计算机系的两位年轻科学家(Albert Gu, Tri Dao)联合推出一种叫做“Mamba”的大语言模型(LLM)新构架。与Transformers等传统模型相比,Mamba能够更有效地处理长序列。它利…...
EHS管理系统为何需要物联网的加持?
EHS是Environment、Health、Safety的缩写,是从欧美企业引进的管理体系,在国外也被称为HSE。EHS是指健康、安全与环境一体化的管理。 而在国内,整个EHS市场一共被分成三类; 一类是EHS管培体系,由专门的EHS机构去为公司…...
记事本(父页面与iframe子页面的联通,vue3+ts展示fbx模型,与tga贴图)
vue3ts 展示fbx与tga贴图 npm i three --save <template><div ref"modelContainer"></div> </template><script setup lang"ts"> import { ref, onMounted } from vue; import * as THREE from three; import { FBXLoader…...
【好书推荐-第五期】《互联网大厂推荐算法实战》(异步图书出品)
😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号:程序员洲洲。 🎈 本文专栏:本文…...
C++ Qt day2
自己封装一个矩形类(Rect),拥有私有属性:宽度(width)、高度(height), 定义公有成员函数: 初始化函数:void init(int w, int h) 更改宽度的函数:set_w(int w) 更改高度的函数:set_h(int h) 输出该矩形的周长和面积函数:void show() #include <io…...
Mac上如何设置映射某个网站站点域名的IP
最近某常用的站点换 IP 了,但是 DNS 服务器还没有修改,这就导致无法访问(换 DNS 服务器也不行)。在用了一段时间的 IP 访问之后,还是没好,不知道是 DNS 污染还是咋了,所以最后还是手动改一下吧。…...
智能分析网关V4智慧冶金工厂视频智能监管方案
一、背景与需求 随着工业4.0的推进,冶金行业正面临着转型升级的压力。为了提高生产效率、降低能耗、保障安全,冶金智能工厂视频监管方案应运而生。该方案通过高清摄像头、智能分析技术、大数据处理等手段,对工厂进行全方位、实时监控…...
WebSocket实现HTML+SpringBoot聊天功能,小程序+SpringBoot聊天功能
目录 一、认识WebSocket 二、HTML实现聊天 三、微信小程序实现聊天 一、认识WebSocket 1.首先博主在初学Java时自我感觉走了很多弯路,因为以前见识短,在接触聊天功能时根本就没能想到有WebSocket这个聊天框架,就只能用底层的UDP或TCP实现聊…...
SpringMVC-RESTFul
文章目录 RESTFul一、基础概念二、增删改查1.查询全部用户信息 (GET)2.根据id查询用户信息3.添加用户(POST)4.修改用户 (PUT)5.删除用户 (DELETE) RESTFul 一、基础概念 二、增删改…...
Spring Boot3整合knife4j(swagger3)
目录 1.前置条件 2.导依赖 3.配置 1.前置条件 已经初始化好一个spring boot项目且版本为3X,项目可正常启动。 作者版本为3.2.2 初始化教程: 新版idea创建spring boot项目-CSDN博客https://blog.csdn.net/qq_62262918/article/details/135785412?…...
解决Windows系统本地端口被占用
目录 一、被程序占用端口 1.通过终端杀掉占用端口的进程 2.任务管理器 二、被系统列为保留端口 前言: 首先了解为什么会出现端口被占用的情况 端口被占用的情况可能出现的原因有很多,主要有以下几点: 1.多个应用程序同时启动&…...
GPS位置虚拟软件 AnyGo mac激活版
AnyGo for Mac是一款一键将iPhone的GPS位置更改为任何位置的强大软件!使用AnyGo在其iOS或Android设备上改变其GPS位置,并在任何想要的地方显示自己的位置。这对那些需要测试应用程序、游戏或其他依赖于地理位置信息的应用程序的开发人员来说非常有用&…...
视频号视频怎么使用视频号下载助手提取视频呢?
微信视频号怎么使用视频下载助手提取视频,今天就和大家一起来看看我是如何操作的。 关于视频下载助手,给大家准备好了。获取方式在文末。注意看下关键词,家人们。 微信视频号是微信平台上的一个短视频分享功能,类似于抖音、快手这…...
第一篇【传奇开心果短博文系列】鸿蒙开发技术点案例示例:从helloworld开始理解鸿蒙开发ArkTS编程思路
传奇开心果短博文系列 系列短博文目录鸿蒙开发技术点案例示例系列 短博文目录一、前言二、初步解读鸿蒙的helloworld三、进一步深入解读理解 系列短博文目录 鸿蒙开发技术点案例示例系列 短博文目录 一、前言 从掰碎了揉烂了详细注释解读helloworld开始,理解Ark…...
四、MySQL之DML DQL
有关数据表的DML操作 INSERT 针对于数据的插入DELETE 针对于数据的删除UPDATE 针对于数据的修改 4.1 INSERT语句 INSERT INTO 表名 [(列名1,列名2,....)] VALUES (值1,值2,...); 默认情况下,一条插入命令只针对一行进行影响INSERT INTO 表…...
YOLOv8优化策略:注意力涨点系列篇 | 多尺度双视觉Dualattention | Dual-ViT,顶刊TPAMI 2023
🚀🚀🚀本文改进:多尺度双视觉Dualattention注意yolo,提升小目标检测能力 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1.原理介绍 论文:Dual Vision Transformer | IEEE Journals & Magazine …...
视频渲染靠cpu还是显卡 会声会影视频渲染的作用是什么
视频渲染最占用的资源就是CPU,多核心多线程,这样才能渲染快。渲染可以在时间线上实时平滑预览,便于编辑,最终导出成片的时候速度也会快一些,渲染就是对每桢的图像进行重新优化的过程。 渲染的作用主要是能够保证使用者…...
TimescaleDB Helm Charts 项目停止维护后的应对策略与迁移指南
1. 项目概述与背景如果你正在Kubernetes上寻找一种可靠、可扩展的方式来部署时序数据库,那么TimescaleDB的Helm Charts项目曾经是一个绕不开的选项。这个由Timescale官方维护的仓库,旨在为开发者提供一套标准化的、声明式的部署方案,让你能通…...
PCB设计数据管理:挑战、实践与关键技术
1. PCB设计数据管理的核心挑战与行业现状在电子行业快速迭代的今天,印刷电路板(PCB)设计团队面临着前所未有的时间压力。根据行业调研数据,领先企业通过优化数据管理实现了22%的PCB开发时间缩减,而落后企业同期开发时间反而增加了9%。这种差距…...
3分钟拯救你的B站缓存视频:m4s-converter让珍贵回忆永不消失
3分钟拯救你的B站缓存视频:m4s-converter让珍贵回忆永不消失 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否遇到过这样的困扰…...
3分钟快速上手:Android音频无线转发终极指南
3分钟快速上手:Android音频无线转发终极指南 【免费下载链接】sndcpy Android audio forwarding PoC (scrcpy, but for audio) 项目地址: https://gitcode.com/gh_mirrors/sn/sndcpy 你是否曾经希望将手机上的音频内容同步到电脑上播放?无论是观看…...
【职业发展】程序员成长路径:从初级到架构师的进阶指南
【职业发展】程序员成长路径:从初级到架构师的进阶指南 引言 程序员的职业发展是一个持续学习和成长的过程。从初级程序员成长为技术架构师,需要经历多个阶段的积累和蜕变。本文将详细分析程序员成长的各个阶段,帮助你规划职业发展路径。 …...
XClaw Skill:AI Agent的社交网络与技能市场接入实战指南
1. 项目概述:XClaw Skill,AI Agent的“社交网络”与“技能市场”通行证如果你正在开发或使用AI Agent,并且希望它不再是一个信息孤岛,而是能与其他Agent交流、协作、甚至通过自己的“手艺”赚取收益,那么XClaw.network…...
德国工业4.0:从顶层设计到车间实践的制造业数字化转型
1. 工业4.0浪潮下的欧洲:一场由德国引领的深度变革提到德国制造,很多人脑海里蹦出来的词是“严谨”、“保守”甚至“刻板”。没错,德国人对于工业流程、制造工艺和质量标准的执着,有时近乎偏执。但正是这种对“传统”的极致坚守&a…...
用Wireshark抓包实战解析USB控制传输:从SETUP包到ACK的完整流程
用Wireshark实战拆解USB控制传输:从设备枚举到数据交互的深度解析 当你第一次插入USB设备时,主机和设备之间究竟发生了什么?那些看似神秘的SETUP令牌包、DATA0数据包背后隐藏着怎样的通信逻辑?本文将带你用Wireshark这个"网络…...
Oracle数据库深度解析:从入门到精通的全面指南
在当今数据驱动的时代,数据库管理系统(DBMS)已成为企业信息化建设的核心。作为全球领先的商业数据库产品,Oracle数据库凭借其卓越的性能、高可用性和强大的扩展能力,长期占据市场主导地位。本文将为您带来一份从入门到…...
Arm TechCon技术生态深度解析:从IP设计到SoC研发的实战指南
1. 从EE Times视角看Arm TechCon:一场技术盛宴的深度导览 在科技行业,尤其是半导体和嵌入式系统领域,会议多如牛毛。但如果你问我,哪一类会议最能让我这个在行业里摸爬滚打了二十多年的老工程师感到兴奋,答案无疑是那些…...
