二叉树的三种存储结构:
- 双亲存储结构
typedef struct { ElemType data; int parent; }PTree[MaxSize]
- 孩子链存储结构
1 typedef struct node 2 { 3 ElemType data; 4 struct node *sons[MaxSons];//指向孩子结点 5 }TSonNode;
//定义多叉树 - 孩子兄弟链存储结构
1 typedef struct node 2 { 3 ElemType data; 4 struct node *hp;//指向兄弟 5 struct node *vp;//指向孩子 6 }TSBNode;
其他类型的存储结构
1 //孩子表示法(顺序+链式) 2 struct CTnode 3 { 4 int child;//孩子在数组的位置 5 struct CTnode *next; 6 }; 7 typedef struct 8 { 9 ElemType data; 10 struct CTnode *firstChild; 11 }CTbox;
类似于邻接表的思想
1 //孩子兄弟表示法(链式存储) 2 typedef struct CSNode 3 { 4 ElemType data; 5 struct CSNode *firstchild,*nextsibling; 6 //第一个孩子和右兄弟指针 7 }CSNode,*CSTree;
以后自己定义数据结构多从上面吸收经验。