6.1树的定义和存储
大家先不要掌握这个是如何排序的,只要知道,这个父母表示法就是类似于这样的。
发布日期:2021-06-30 10:49:20
浏览次数:2
分类:技术文章
本文共 1140 字,大约阅读时间需要 3 分钟。
树(Tree)是n(n>=0)个结点的有限集。如下图中,A为根,图6.1(a)称为子树(SubTree)
结点度(Degree):如A的结点度为3,B的结点度为2,C的结点度为1。
结点度为0的结点叫叶子(Leaf):如K,L,M。
孩子(Child):如L是E的孩子,E是B的孩子。
双亲(Parent):A是B的双亲,B是E的双亲。
兄弟(Sibling):如BCD为兄弟。
层次(Level):根为第一层,然后第二层,第三层。
深度(Depth):上图深度为4。
森林(Forest):是m(m>=0)颗互不相交的树的集合。
树的存储结构是干什么的??
操作系统的文件管理,目录管理,网络系统中的域名管理,数据库系统里面的索引,编译器的语法书等等
因为内存是线性的,所以下面表示树只有三种表示法:
双亲、孩子、孩子兄弟表示法
下面给出双亲表示法:
typedef int ElemType;typedef struct PTNode{ ElemType data; //结点数据 int parent; //双亲位置}PTNode;typedef struct{ PTNode nodes[MAX_TREE_SIZE]; int r; //根结点位置 int n; //结点数目}PTree;如下,这样的话,上图可以写成这样:
下标 | 数据 | 父母 |
0 | A | -1 |
1 | B | 0 |
2 | E | 1 |
3 | K | 2 |
4 | L | 2 |
5 | F | 1 |
6 | C | 0 |
7 | G | 6 |
8 | D | 0 |
9 | H | 8 |
10 | M | 9 |
11 | I | 8 |
12 | J | 6 |
这个的缺点是,如果要知道某个孩子是什么,就要遍历整个树。
我们也可以把结构改变,增加两列,上面填写他们孩子的下标。
下面是孩子表示法:
下面直接表示,因为为了演示方便,在此就不排序了。以后说到再排序
孩子父亲表示法就是在这行加入父亲行号如下图:
下面是代码:
//双亲孩子表示法#define MAX_TREE_SIZE 100typedef 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, n; //根的位置,和结点数目
转载地址:https://it1995.blog.csdn.net/article/details/55098423 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月25日 01时27分04秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
华为模拟器eNSP安装初体验
2019-04-30
RFC768:用户数据报协议(UDP)
2019-04-30
RFC791:INTERNET PROTOCOL网络协议
2019-04-30
RFC7209:以太网VPN(EVPN)的要求
2019-04-30
虚拟可扩展局域网 (VXLAN):基于三层网络实现二层虚拟化的框架
2019-04-30
手机端安装步骤构思
2019-04-30
java_jsp_javaScript
2019-04-30
create table student
2019-04-30
学生成绩查询模块
2019-04-30
linux同步网络时间
2019-04-30
jfinal多条件查询防止SQL注入
2019-04-30
oracle定时备份脚本
2019-04-30
linux中crontab command not found
2019-04-30
linux中mysql定时备份脚本
2019-04-30
Nginx配置SSI
2019-04-30
oracle归档日志满
2019-04-30
oracle设置自动清理归档日志脚本
2019-04-30
Oracle 内存信息查询
2019-04-30
linux命令find应用
2019-04-30
oracle查看数据库控制文件位置&制作控制文件镜像
2019-04-30