首页 > 其他分享 >【数据结构-树】树及森林的定义

【数据结构-树】树及森林的定义

时间:2022-11-10 17:57:34浏览次数:39  
标签:结点 数据结构 struct int 孩子 表头 树及 data 定义

目录

1 双亲表示法

data parent
存储某个结点的数据信息 存储该结点的双亲所在数组中的下标
#define MAX 50

typedef struct TreeNode{
    int data; // 数据域
    int parent; // 双亲结点的下标
} TNode;

typedef struct Tree{
    TNode nodes[MAX]; // 结点数组
    int n; // 当前结点数
} T;

image

2 孩子表示法

2.1 孩子表示法

  • 表头数组的表头结点:
data firstchild
存储某个结点的数据信息 存储该结点的孩子链表的头指针
  • 孩子链表的孩子结点:
data next
存储某个结点在表头数组中的下标 存储指向某结点的下一个孩子结点的指针
#define MAX 50

typedef struct ChildNode{ // 孩子链表的孩子结点
    int data; // 数据域
    struct ChildNode *next; // 下一个孩子结点
} CNode;

typedef struct TreeNode{ // 表头数组的表头结点
    int data; // 数据域
    CNode *firstChild; // 孩子链表的头指针
} TNode;

typedef struct Tree{
    TNode nodes[MAX]; // 结点数组
    int n; // 结点总数
}

2.2 双亲孩子表示法

  • 表头数组的表头结点:
data parent firstchild
存储某个结点的数据信息 存储该结点的双亲所在数组中的下标 存储该结点的孩子链表的头指针
  • 孩子链表的孩子结点:
data next
存储某个结点在表头数组中的下标 存储指向某结点的下一个孩子结点的指针
#define MAX 50

typedef struct ChildNode{ // 孩子链表的孩子结点
    int data; // 数据域
    struct ChildNode *next; // 孩子链表的头指针
} CNode;

typedef struct TreeNode{ // 表头数组的表头结点
    int data; // 数据域
    int parent; // 双亲结点的下标
    CNode *firstChild; // 下一个孩子结点
} TNode;

typedef struct Tree{
    TNode nodes[MAX]; // 结点数组
    int n; // 结点总数
}

image

3 孩子兄弟表示法

data firstchild rightsib
存储某个结点的数据信息 存储该结点的孩子链表的头指针 存储该结点的右兄弟结点的存储地址
typedef struct TreeNode{
    int data; // 数据域
    struct TreeNode *firstChild; // 孩子链表的头指针
    struct TreeNode *rightsib; // 右兄弟的地址
} TNode, *Tree;

标签:结点,数据结构,struct,int,孩子,表头,树及,data,定义
From: https://www.cnblogs.com/Mount256/p/16877891.html

相关文章

  • Redis数据结构简介-Set
     Set结构存储值与结构读写能力:包含字符串的无序收集器(unorderedcollection),且数据不重复.添加,获取,移除单个元素;检查一个元素是否存在于集合中;......
  • C语言 函数01 函数的定义与分类
    函数定义:维基百科对函数的定义:是一个大型程序中的某部分代码,由一个或多个语句块组成。它负责完成某项特定任务,而且相较于其他代码,具备相对的独立性。一般会有输入参数并有返......
  • Redis数据结构简介-Hash
     Hash结构存储值与结构读写能力:包含键值对的无序散列表添加,获取,移除单个键值对;获取所有键值对.存储类似HashMap的数据 hash是日常开发过......
  • Redis数据结构简介-List
     List结构存储值与结构读写能力:一个链表,链表上的每个节点都包含了一个字符串从链表的两端推入或者弹出元素;根据偏移量对链表进行修剪(trim);读取单......
  • Elasticsearch自定义评分+折叠Java实现
    QueryBuilderboolQueryBuilder=query.getBoolQueryBuilder(localInfoRequest,QueryEnum.termsQuery); FunctionScoreQueryBuilder.FilterFunctionBuilder[]filterF......
  • SpringBoot自定义Starter(二十四)
    即使有一天,我放弃了自己的身体,也请你,不要放弃我,我亲爱的灵魂.上一章简单介绍了Spring_Session解决Session共享的问题(二十三),如果没有看过,​​请观看上一章​​一.自定义......
  • 微信小程序自定义showModel后怎么获取获取input框输入值
    先看下效果自己调样式太好玩了哈哈哈参考官方文档用官方的直接copy过来就可以实现https://developers.weixin.qq.com/miniprogram/dev/component/input.htmlwxml......
  • SpringBoot自定义日志Starter(二十五)
    即使有一天,我放弃了自己的身体,也请你,不要放弃我,我亲爱的灵魂.上一章简单介绍了SpringBoot自定义Starter(二十四),如果没有看过,​​请观看上一章​​一.AOP实现日志功能......
  • el-calendar 自定义我的日程
    效果图1. el-calendar官方文档内容太少,具体需要css样式,可以根据ui设置自行修改,一下的代码只展示JS的逻辑.2. 遍历日期,确定显示内容<el-calendarv-model="value"><te......
  • simpread-(127 条消息) npm run serve 自定义端口和指定临时端口_欲饮琵琶码上催的博
    本文由简悦SimpRead转码,原文地址blog.csdn.net临时指定端口方式一port=5000npmrunserve方式二npmrunserve----port8081注意:--是不能省略的。永久......