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

数据结构—基础知识(13):树的存储结构

数据结构—基础知识(13):树的存储结构

  1. 双亲表示法

    这种表示方法中,以一组连续的存储单元存储树的结点,每个结点除了数据域data外,还附设一个parent域用以指示其双亲结点的位置。
    在这里插入图片描述

    这种存储结构利用了每个结点(除根结点外)只有唯一的双亲性质。这种存储结构下,求结点的双亲十分方便,也很容易求树的根,但求结点的孩子时需要遍历整个结构

  2. 孩子表示法

    由于树中每个结点可能有多棵子树,则可用多重链表,即每个结点有多个指针域,其中每个指针指向一棵子树的根结点,此时链表中的结点可以有如下图的两种结点格式。
    在这里插入图片描述

    若采用第一种结点格式,则多重链表中的结点是同构的,其中d为树的度。由于树中很多结点的度小于 d,所以链表中有很多空链域,空间较浪费,不难推出,在一棵有n个结点度为k的树中必有n(k-1)+1 个空链域

    若采用第二种结点格式,则多重链表中的结点是不同构的,其中d为结点的度,degree 域的值同d。此时,虽能节约存储空间,但操作不方便

    另一种办法是,把每个结点的孩子结点排列起来,看成是一个线性表,且以单链表做存储结构,则n个结点有n个孩子链表(叶子的孩子链表为空表)。而n个头指针又组成一个线性表,为了便于查找,可采用顺序存储结构。

    下图(a)所示为下图中的树的孩子表示法。与双亲表示法相反,孩子表示法便于那些涉及孩子的操作的实现。可以把双亲表示法和孩子表示法结合起来,即将双亲表示和孩子链表合在一起。图(b)所示的就是这种存储结构的一例,它和图(a)表示的是同一棵树。
    在这里插入图片描述

  3. 孩子兄弟法

    孩子兄弟法又称二叉树表示法,或者二叉链表表示法,即以二叉链表做树的存储结构。链表中结点的两个链域分别指向该结点的第一个孩子结点(firstchild)和下一个兄弟结点(nextsibling)

    //------树的二叉链表(孩子—兄弟)存储表示------
    typedef struct CSNode{ElemType data;struct CSNode *firstchild,*nextsibling;
    }CSNode,*CSTree;
    

在这里插入图片描述

http://www.lryc.cn/news/288112.html

相关文章:

  • 【Python爬虫入门到精通】小白也能看懂的知识要点与学习路线
  • 服务器数据恢复—EVA存储raid5硬盘离线的数据恢复案例
  • MAMBA论文疑被拒收,计算机科学顶会评审遭质疑
  • EHS管理系统为何需要物联网的加持?
  • 记事本(父页面与iframe子页面的联通,vue3+ts展示fbx模型,与tga贴图)
  • 【好书推荐-第五期】《互联网大厂推荐算法实战》(异步图书出品)
  • C++ Qt day2
  • Mac上如何设置映射某个网站站点域名的IP
  • 智能分析网关V4智慧冶金工厂视频智能监管方案
  • WebSocket实现HTML+SpringBoot聊天功能,小程序+SpringBoot聊天功能
  • SpringMVC-RESTFul
  • Spring Boot3整合knife4j(swagger3)
  • 解决Windows系统本地端口被占用
  • GPS位置虚拟软件 AnyGo mac激活版
  • 视频号视频怎么使用视频号下载助手提取视频呢?
  • 第一篇【传奇开心果短博文系列】鸿蒙开发技术点案例示例:从helloworld开始理解鸿蒙开发ArkTS编程思路
  • 四、MySQL之DML DQL
  • YOLOv8优化策略:注意力涨点系列篇 | 多尺度双视觉Dualattention | Dual-ViT,顶刊TPAMI 2023
  • 视频渲染靠cpu还是显卡 会声会影视频渲染的作用是什么
  • v-if 导致 elementui 表单校验失效问题解决
  • Linux本地部署SVN服务结合内网穿透实现远程访问
  • 短信平台(电信)
  • 11.STM32F4 输入捕获
  • opencv#30 线性滤波
  • 如何使用iPhone或iPad上的二维码共享Wi-Fi密码?这里有详细步骤
  • 在游戏里开公司!基于ERNIE SDK的多智能体游戏应用
  • 【SpringCloud Nacos】 微服务治理介绍及Nacos引入初体验
  • JavaEE进阶(6)SpringBoot 配置文件(作用、格式、properties配置文件说明、yml配置文件说明、验证码案例)
  • 面包屑是什么
  • C++ 设计模式之责任链模式