6.6.3 树和森林的孩子兄弟表示法

树和森林的二叉链表(孩子-兄弟)存储表示
  typedef struct CSNode{
   ElemType data;
   struct CSNode *firstchild, *nextsibling;
  } CSNode, *CSTree;
 

   
  树中每个结点都设有两个指针,
  其一,firstchild 指向该结点的"第一个"子树根结点,其二,nextsibling 指向它的"下一个"兄弟结点。
  这里的"第一个"和"下一个"都没有逻辑上的含义,只是在构造存储结构时自然形成的次序。
 
 
   树的孩子-兄弟链表
 
 
 森林的孩子-兄弟链表
 
    对森林来说,可认为各棵树的根结点之间是一个 "兄弟"关系,因此无论树和森林都可以用这样的"二叉链表"表示。由于结点中的两个指针指示的分别为 "孩子"和"兄弟"的关系,故称为"孩子-兄弟链表" 。

  例如,上页所示树的孩子-兄弟链表如左图所示。
  删除树中的根结点之后,可以得到下列图示的森林,它的孩子-兄弟链表则由指向结点B的指针表示,参见左窗口。
  

  思考题 如果没有告诉你,这是上图所示的森林的存储结构,你是否会将它看成是一棵二叉树呢?

  由此,通过存储结构的一致性作为"媒介",可建立森林和二叉树之间一一对应的关系。