树存储结构

父节点表示法

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

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

对应的树:

/* 树节点的定义 */
#define MAX_TREE_SIZE 100typedef struct{TElemType data;int parent; /* 父节点位置域 */
} PTNode;typedef struct{PTNode nodes[MAX_TREE_SIZE];int n; /* 节点数 */
} PTree;

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

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

childi指向一个结点

可以加上parent。

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

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

孩子链表:

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

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

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

typedef struct CSNode{ElemType data;struct CSNode *firstchild, *nextsibling;
} CSNode, *CSTree;

数据结构课上笔记13相关推荐

  1. 数据结构课上笔记12

    二叉树的存储结构 顺序存储结构 完全二叉树:用一组地址连续的 存储单元依次自上而下.自左至右存 储结点元素,即将编号为 i  的结点元 素存储在一维数组中下标为 i –1 的分量中. 一般二叉树:将其 ...

  2. 数据结构课上笔记11

    满二叉树 (Full binary tree) 除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树. 国内教程定义:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树 ...

  3. 数据结构课上笔记14

    图是一种:   数据元素间存在多对多关系的数据结构   加上一组基本操作构成的抽象数据类型. 图 (Graph) 是一种复杂的非线性数据结构,由顶点集合及顶点间的关系(也称弧或边)集合组成.可以表示为 ...

  4. 数据结构课上笔记10

    树 树的定义:树(Tree)是 n(n≥0)个结点的有限集.若 n=0,称为空树:若 n > 0,则它满足如下两个条件: (1)  有且仅有一个特定的称为根 (Root) 的结点: (2)  其 ...

  5. 数据结构课上笔记15

    图的存储 多重链表:完全模拟图的样子,每个节点内的指针都指向该指向的节点. 节点结构内指针数为度 缺点:浪费空间.不容易操作 数组表示法(邻接矩阵表示法) 可用两个数组存储.其中一个 一维数组存储数据 ...

  6. R语言课上笔记(第1-4天)

    1. 第一天笔记 推荐的书籍: <R数据科学>推荐–<R语言入门与实践> <R语言与数据分析实战>–韩国人 <R语言数据可视化之美>–绘图 安装注意事项 ...

  7. 【课上笔记】第五章 数组和广义表

    数组和广义表 5.1多维数组 5.1.1数组的逻辑结构 数组是我们熟悉的一种数据结构,可以看作线性表的推广. 数组作为一种数据结构其特点是结构中的元素本身可以是具有某种结构的数据,但属于同一类型.比如 ...

  8. 【课上笔记】第二章 线性表

    第二章 线性表 2.1 线性表的逻辑结构 2.1.1线性表的定义 ​ 线性表是一种线性结构.线性结构的特点是数据元素之间是一种线性关系,数据元素"一个接一个的排列".在一个线性表中 ...

  9. 【课上笔记】第七章 树与森林

    树与森林 7.1树的概念与表示 7.1.1树的定义及相关术语 1.树的定义 ​ 树(Tree)是n(n≥0)个有限数据元素的集合.当n=0时,称这棵树为空树.在一棵非树T中: ​ ⑴有一个特殊的数据元 ...

最新文章

  1. 让批处理运行不显示窗口的两个方法
  2. STM32PB2(BOOT1)使用注意
  3. 深度学习的数学(2)恶魔神经
  4. 厦门one_“断轴”频发,李想承认理想ONE存缺陷!曾声明悬架非常安全
  5. linux内核替换图片,linux内核替换 - magic_吕伟的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. Java如何将Ftp文件解压_ftp解压工具,ftp解压工具在java环境下配置其连接
  7. 面试官就是这么欺负人:new Object()到底占用几个字节?
  8. html批量替换不同关键词,JS批量替换内容中关键词为超链接
  9. Django models模块字段注释
  10. Redis Desktop Manager 黑屏
  11. ssh服务器配置以及密匙登录
  12. 多的是,你不知道的“浮点数”
  13. python中string和bool的转换
  14. 满天星(HTML+CSS+JS)
  15. WebGl之.wrl生成.stl文件
  16. 使用VISA编程入门教程
  17. 图书馆管理系统--stage2核心代码实现
  18. SVO、vinsmono、 OKVIS系统比较
  19. 论文阅读”Ada-nets: Face clustering via adaptive neighbour discovery in the structure space“
  20. DTS、杜比2.0、杜比5.1、AC3

热门文章

  1. cpu工作原理flash动画_17张PLC工作原理动画,每一个都是经典
  2. 阿里云java mysql环境_阿里云搭建centos java mysql nginx环境
  3. u-boot的patch文件制作
  4. 炸金花比牌规则java_陈陈来给你们炸金花的简易纸牌规则教学与心态指导
  5. python归一化 增大差异_Python逻辑回归模型原理及实际案例应用
  6. hdfs 多个文件合并_hadoop学习笔记3 hadoop程序将本地文件夹中多个文件,合并为一个文件并上传到hdfs中--梦飞翔的地方(梦翔天空)...
  7. python tkinter pack 同一行_用python tkinter中的一行连接2个复选按钮
  8. 郑州升达经贸管理学院计算机专业学费,郑州升达经贸管理学院学费
  9. 【转】[程序集清单定义与程序集引用不匹配]分析及解决
  10. 【转】Azure 命令行工具大混战,都是什么,该选哪个?