数据结构课上笔记13

举报
兔老大 发表于 2021/05/07 04:27:17 2021/05/07
【摘要】 树存储结构   父节点表示法   数据域:存放结点本身信息。 双亲域:指示本结点的双亲结点在数组中的位置。 对应的树: /* 树节点的定义 */#define MAX_TREE_SIZE 100 typedef struct{ TElemType data; int parent; /* 父节点位置域 */} PTNode; type...

树存储结构

 

父节点表示法

 

数据域:存放结点本身信息。

双亲域:指示本结点的双亲结点在数组中的位置。

对应的树:


  
  1. /* 树节点的定义 */
  2. #define MAX_TREE_SIZE 100
  3. typedef struct{
  4. TElemType data;
  5. int parent; /* 父节点位置域 */
  6. } PTNode;
  7. typedef struct{
  8. PTNode nodes[MAX_TREE_SIZE];
  9. int n; /* 节点数 */
  10. } PTree;

特点:找双亲容易,找孩子难。

孩子表示法(树的链式存储结构)

 

childi指向一个结点

可以加上parent。

在有 n 个结点、度为  d 的树的 d 叉链表中,有  n×(d-1)+1 个空链域

 

我们可以用degree记录有几个孩子,省掉空间,但是结点的指针个数不相等,为该结点的度 degree。

 

孩子链表:

 

把每个结点的孩子结点排列起来,看成是一个线性表,用单链表存储,则 n 个结点有 n 个孩子链表(叶子的孩子链表为空表)。而 n 个头指针又组成一个线性表,用顺序表(含 n 个元素的结构数组)存储。

孩子兄弟表示法(二叉树表示法)

用二叉链表作树的存储结构,链表中每个结点的两个指针域分别指向其第一个孩子结点和下一个兄弟结点


  
  1. typedef struct CSNode{
  2. ElemType data;
  3. struct CSNode *firstchild, *nextsibling;
  4. } CSNode, *CSTree;

 

文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。

原文链接:fantianzuo.blog.csdn.net/article/details/84395716

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。