来源: https://blog.csdn.net/qq_41587740/article/details/104215365
二叉树的存储结构
双亲表示法:
原理:
R为头节点,所以parent=-1;
ABC的双亲节点数组下标为0,所以parent=0;
DE的双亲节点数组下标为1,所以parent=1;
代码实现:
typedef struct{
int data; //数据域
int parent; //伪指针
}PTNode; //节点类型
typedef struct{
PTNode nodes[MAX_TREE_SIZE]; //节点数据信息
int n; // 节点个数
}PTree; //树的类型
孩子表示法:
原理:
代码实现:
typedef struct CNode{
int child; //孩子节点的下标
struct CNode *next; //下一个孩子节点的指针
}CNode; //单链表节点类型
typedef struct{
int data; //节点数据
struct CNode *firstchild; //孩子节点的第一个节点,即单链表的头节点
}PNode; //树的节点类型
typedef struct{
PNode nodes[MAX_TREE_SIZE]; //所有节点数据
int n; //节点个数
}CTree; //树的类型
孩子兄弟表示法:
原理:
代码实现:
typedef struct CSNode{
int data;
struct CSNode *fristchild,*nextsibling;
}CSNode,*CSTree;