以下所有内容都来自网易云课堂——数据结构(小甲鱼版)
树作为一种一对多的关系,在存储数据时与链表不同,采用数据与关系分离的方式
也就是说数据结构由两部分组成,一部分存储数据,一部分存储关系,二者采用不同的数据结构
数据采用数组,关系采用链表
如下:
数据——
typedef struct tree
{
sonPtr sons;
int parent;
char content;
}tree;
上面每一个元素都由三部分组成,数据(content),儿子们(sons),爸爸(parent)
parent指明父节点的索引
关系——
typedef struct son
{
int treeID;
struct son *next;
}*sonPtr,son;
关系也就是儿子们,是一个链表,把该节点的儿子串起来
最后整个树合起来就是
typedef struct wood
{
tree trees[MAX_TREE_SIZE];
int count;
int root;
}wood;
这里wood其实就指一棵树,下面的tree数组存放树节点的相关信息,count是节点数,root指明根节点的索引
所有知识看图就明白,先放一张萌萌的树
该结构存储如下:
休息了~