树的存储_ 双亲表示法 及 双亲孩子表示法
目录
1.概念
一般树的存储 参考1:
一般树的存储 参考2:
2.代码
1.概念
树状图是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子树。
- 节点的度(degree):一个节点含有的子树的个数称为该节点的度; 叶节点或终端节点(Leaf):度为0的节点称为叶节点;
- 非终端节点或分支节点:度不为0的节点; 双亲节点或父节点(parent):若一个节点含有子节点,则这个节点称为其子节点的父节点;
- 孩子节点或子节点(child):一个节点含有的子树的根节点称为该节点的子节点; 兄弟节点(Sibling):具有相同父节点的节点互称为兄弟节点;
- 树的度:一棵树中,最大的节点的度称为树的度; 节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;
- 树的高度或深度(Depth):树中节点的最大层次; 堂兄弟节点:双亲在同一层的节点互为堂兄弟;
- 节点的祖先:从根到该节点所经分支上的所有节点; 子孙:以某节点为根的子树中任一节点都称为该节点的子孙。
- 森林(Forest):由m(m>=0)棵互不相交的树的集合称为森林;
一般树的存储 参考1:
一般树的存储:(为了解决非线性结构,用线性结构进行存储的问题)
双亲表示法:对应的结构中的节点的值,存储的是其父亲的索引(求父节点方便)。
孩子表示法:对应的结构中的节点的值,存储的是其子节点的索引链表(求子节点方便)。
双亲孩子表示法:双亲表示法+孩子表示法。
二叉树表示法:把一颗普通树转换成二叉树来存储。
转换方法:设法保证任意一个节点的:
- 1)左指针指向它的第一个孩子;
- 2)它的右指针指向它的兄弟,
只要满足此条件,就可以把一个普通树转换成二叉树。
拓展:森林的存储:
- 将森林中的各个树的根节点,当成兄弟关系;
- 将森林中的一般树树转换成二叉树,以二叉树的方式存储各个一般树。
一般树的存储 参考2:
2.代码
//1.树的双亲表示法 结点结构定义#define MAX_TREE_SIZE 100
typedef int ElemType;//双亲结点
typedef struct PTNode //定义树中的一个结点
{ElemType data;int parent;
}PTNode;//树结构
typedef struct
{PTNode nodes[MAX_TREE_SIZE];int r; //根的位置索引int n; //树中结点的总数
}PTree;//————————————————————————————————————————————————————————————————————//
//2.树的双亲孩子表示法 结点结构定义#define MAX_TREE_SIZE 100
typedef int ElemType;//孩子结点
typedef struct CTNode //定义树中的一个结点
{ int child; //孩子结点的下标struct CTNode *next; //指向下一个孩子结点的指针
}*ChildPtr;//表头结构
typedef struct
{ElemType data; //存放树中结点的数据int parent; //存放双亲下标ChildPtr firstchild; //指向第一个孩子的指针
}CTBox;
//树结构
typedef struct
{CTBox nodes[MAX_TREE_SIZE];int r; //根的位置索引int n; //树中结点的总数
}PCTree;
树的存储_ 双亲表示法 及 双亲孩子表示法相关推荐
- 数据结构c语言——树的三种存储结构(双亲表示法、孩子表示法、兄弟表示法)
在大量的应用中,人们曾使用多种形式的存储结构来表示树.这里,我们介绍3种常用的链表结构. 1.双亲表示法: 假设以一组连续空间存储树的结点,同时在每个结点中附设一个指示器指示其双亲结点在链表中的位置, ...
- 双亲表示法、孩子表示法、孩子兄弟表示法(二叉树表示法),森林和二叉树的转换
树的存储结构 一.双亲表示法 二.孩子表示法(孩子链表) 三.孩子兄弟表示法(二叉树表示法.二叉链表表示法) 四.森林(树)和二叉树的转换 一.双亲表示法 实现:定义数组结构存放树的结点,每个结点含两 ...
- 树的应用 —— 树的存储
树的应用 -- 树的存储 树形结构是一对多的关系,除了树根,每个节点都有一个唯一的直接前驱(双亲):除了叶子,每个节点都有一个或多个直接后继(孩子). 那么如何将数据及它们之间的逻辑关系存储起来呢? ...
- 理论基础 —— 树 —— 树的存储结构
[父亲表示法] 由于树中每个结点均有且仅有一个父结点,那么根据这一特性,用一维数组来存储树的各个结点(一般按层序存储),数组中的一个元素对应树中的一个结点,每个结点记录两类信息:结点的数据信息.该结点 ...
- 树的概念及存储结构(双亲表示法,孩子表示法,孩子兄弟表示法)
文章目录 一. 树的概念 二. 树的存储结构 (一). 双亲表示法 (二). 孩子表示法 1. 定长结点链表存储结构 2. 孩子链表存储结构 (三). 孩子兄弟表示法 一. 树的概念 树(Tree)是 ...
- 数据结构与算法(6-1)树的存储(树的双亲表示、树的孩子表示及树的双亲孩子表示)
目录 一.树的双亲表示 存储结构 总代码 二.树的孩子表示 存储结构 总代码 三.树的双亲孩子表示 存储结构 一.树的双亲表示 存储结构 采用结构体数组的形式存储数据. (根结点parent=1:它没 ...
- c语言孩子兄弟法存储一棵树,数据结构(C语言版)---树
1.树:n个结点的有限集,n=0时为空树. 1)特点: (1)有且仅有一个特定的称为根的结点. (2)有若干个互不相交的子树,这些子树本身也是一棵树. (3)树的根结点没有前驱结点,除根结点外的所有结 ...
- c语言孩子兄弟法存储一棵树,树的孩子兄弟表示法
前面讲解了存储普通树的双亲表示法和孩子表示法,本节来讲解最后一种常用方法--孩子兄弟表示法. 图 1 普通树示意图 树结构中,位于同一层的节点之间互为兄弟节点.例如,图 1 的普通树中,节点 A.B ...
- 树的存储结构-孩子兄弟表示法
实现:用二叉链表作树的存储结构,链表中每个结点的两个指针域分别指向其第一个孩子结点和下一个兄弟结点 代码如下: #include <iostream> using namespace st ...
- 【数据结构-树】1.树与森林(树的遍历、树的存储方法、并查集的实现)
树的定义 树是一种数据结构,它是由 n(n>=1)n(n>=1)n(n>=1) 个有限结点组成一个具有层次关系的集合.把它叫做 "树" 是因为它看起来像一棵倒挂的 ...
最新文章
- RESTful架构和RESTful API设计总结
- 技术随笔 查找速度最快的Google IP
- 启用第三方Chrome插件
- eclipse 用jsp文件连接mysql_用本地navicat去连接阿里云ECS中的mysql
- 设计模式 原型模式_原型设计模式:创建另一个小车
- pcl里面的3D特征
- 飞秋官方下载 某些大型企业
- SEO中HTML标签权重列表
- 手机mstsc远程工具_ToDesk — 免费不限速的远程控制软件
- 加减仅仅为了扩大绘制区域:大哥你不会搞不搞行不?
- 开源软件的总拥有成本指南
- rpg人物制作软件_RPG制作大师下载_RPG制作大师官方下载-太平洋下载中心
- 四叶草默认启动设置方法
- c# lu分解的代码_线性方程组的分解法——LU分解法
- 平衡自行车的原理以及制作方法
- FLV player 在线播放器【www.lantianye3.top】
- html中怎样设置邮件地址,我该如何为自己的域名设置邮箱地址呢?
- 最佳化三维建模与重构中的神经网络先验
- SPI的读写GT21L字库芯片
- User management
热门文章
- LoadRunner 12 和 UFT\QTP 12在HP官网已经可以开始下载了
- Python说文解字_Python之多任务_03
- 使用JavaScript分别实现4种样式的九九乘法表(1X1分别在左上、左下、右上、右下)...
- Centos 部署.net Core
- Python中的get和set方法
- jenkins 管理员账号丢失
- Ceph源码解析:PG peering
- C#中winform使用相对路径读取文件的方法
- 阿里开源框架Jarslink1.6.1新特性
- nodejs 任务调度bull 测试解析