前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据结构(六):树

数据结构(六):树

作者头像
渔父歌
发布2018-12-14 17:08:33
3780
发布2018-12-14 17:08:33
举报
文章被收录于专栏:数据结构笔记数据结构笔记

一、树的定义

ADT Tree{ ​ 数据对象: ​ D={1=<i<=n, n>=0, a(i)属于 ElemType类型} ​ 数据关系: ​ R={<a(i), a(j)> | a(i), a(j)属于 D, 1=<i<=n, 1=<j<=n, 其中每个元素只有一个前驱,可以有零个或多个后继,有且仅有一个元素没有前驱} ​ 基本运算: ​ InitTree(&t):初始化树:构造一棵空树 t。 ​ ClearTree(&t):销毁树:释放树 t所占胡空间。 ​ Parent(t):求元素 t的前驱。 ​ Sons(t):求元素 t的所有后继。 }

二、树的存储结构

1、双亲存储结构

这种存储结构是一种顺序存储结构,用一组连续空间存储树的所有节点,

同时在每个节点中设置一个伪指针指示双亲节点的位置。 结构体类型定义:

代码语言:javascript
复制
typedef struct{
    ElemType data;
    int parent;
} PTree[MaxSize];
2、孩子存储结构

这种存储结构中,每个节点不仅包含数据,还包括指向所有孩子节点的指针。 按照树的度设计节点的最大孩子节点个数。 结构体定义如下:

代码语言:javascript
复制
typedef struct node{
    ElemType data;
    struct node* sons[MAX_SONS];
} TSonNode;
3、孩子兄弟链存储结构

这个存储结构为每个节点设计三个域:一个数据元素域、一个指向当前节点第一个字节点的指针域、一个指向该节点下一个兄弟节点的指针域。 结构体类型定义:

代码语言:javascript
复制
typedef struct tnode{
    ElemType data;
    struct tnode* first_son;
    struct tnode* next_brother;
} TSBNode;

三、树的基本运算

  1. 寻找某种满足特定关系的节点,如寻找当前节点的双亲节点。
  2. 插入或删除某个节点,如在树的当前节点上插入一个新节点或删除当前节点的第 i个孩子节点。
  3. 遍历树中的每个节点。
1、树的遍历

1、先根遍历

​ (1)访问根节点。

​ (2)按照从左到右的顺序先根遍历根节点的每一棵子树。

2、后根遍历

​ (1)按照从左到右的顺序后根遍历每一棵子树。

​ (2)访问根节点。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.11.22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、树的定义
  • 二、树的存储结构
    • 1、双亲存储结构
      • 2、孩子存储结构
        • 3、孩子兄弟链存储结构
        • 三、树的基本运算
          • 1、树的遍历
          相关产品与服务
          对象存储
          对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档