顺序表
方便查找双亲,但不方便查找孩子
链表:方便查找孩子,但不方便查找双亲
将两种存储结合:
以牺牲一定的空间换取同时方便查找双亲与孩子
#include<stdio.h>
#define MAX_TREE_SIZE 100
//树的存储结构
typedef struct{
int data;//存放节点数据
int parent;//双亲的位置域
}PTNode;
//1.适用于搜索双亲位置的存储结构(顺序表)
typedef struct{
PTNode nodes[MAX_TREE_SIZE];
int r;//根结点的位置
int n;//结点个数
}PTree;
//2.适用于搜索孩子位置的存储结构 (链表)
//孩子节点结构
typedef struct ChildNode{
int child;//存放孩子结点在数组中的位置
ChildNode*next;//指向下一个孩子节点
}ChildNode,*ChildPtr;
//双亲结点结构
typedef struct ParentNode {
int data;//存放数据
ChildPtr firstchild;//孩子链表的头指针
}CTBox;
//用于储存每一个双亲结点的数组
typedef struct{
CTBox nodes[MAX_TREE_SIZE];
int n;//节点个数
int r;//指向根结点
}CTree;
//3.将两种存储结构结合起来,方便找双亲,也方便找孩子
typedef struct PandCNode {
int data;//存放数据
int parent;//存放双亲在数组中的位置
ChildPtr firstchild;//孩子链表的头指针
}PandCBox;
int main(){
return 0;
}