二叉树的三种存储结构:

  1. 双亲存储结构
    typedef struct
    {
      ElemType data;
      int parent;
    }PTree[MaxSize]
  2. 孩子链存储结构
    1 typedef struct node
    2 {
    3   ElemType data;
    4   struct node *sons[MaxSons];//指向孩子结点
    5  }TSonNode;
    //定义多叉树
  3. 孩子兄弟链存储结构
    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;

    以后自己定义数据结构多从上面吸收经验。