一、双亲表示法(顺序存储)
结点的指针指向父节点的位置
#define MAX_Tree_Size 100
//双亲表示法
typedef struct {
int data;//数据域
int parent;//双亲位置域
}PTNode;
typedef struct { //树的定义
PTNode nodes[MAX_Tree_Size]; //双亲表示
int n; //结点数
}PTree;
使用数组存储每个结点
二、孩子表示法
使用顺序+链式存储
每个结点后接一个链表,链表是它所有的孩子结点。
struct CTNode {
int child;//孩子结点在数组中的位置
struct CTNode *next;//下一个孩子
};
typedef struct {
int data;
struct CTNode *firstChild;//第一个孩子
}CTBox;
typedef struct {
CTBox nodes [MAX_TREE_SIZE];
int n,r;//结点数和根的位置
}CTree;
三、孩子兄弟表示法
1.左结点才是它的孩子节点,右结点是它的兄弟结点。(左孩子,右兄弟)
四、森林转化为二叉树
1.因为B、C、D是兄弟结点,所以要用孩子兄弟表示法把它们全部作为右孩子结点
2.左边才是孩子结点
五、二叉树转化为森林
1.将森林中各个根节点之间看为兄弟的关系