数据结构——树——孩子表示法

淩亂°似流年 2023-01-08 12:23 316阅读 0赞

数据结构——树——孩子表示法

由于树中每个结点可能有多棵子树,可以考虑用多重链表,即每个结点有多个指针域,其中每个指针指向一棵子树的根结点,我们把这种方法叫做多重链表表示法。不过,树的每个结点的度,也就是它的孩子个数是不同的。

具体办法是,把每个结点的孩子结点排列起来,以单链表作存储结构,则n个结点有n个孩子链表,如果是叶子结点则此单链表为

空。然后n个头指针又组成一个线性表,采用顺序存储结构,存放进一个一维数组中,如图6-4-4所示。
在这里插入图片描述
为此,设计两种结点结构,一个是孩子链表的孩子结点,如表6-4-7所示。
在这里插入图片描述
其中child是数据域,用来存储某个结点在表头数组中的下标。next是指针域,用来存储指向某结点的下一个孩子结点的指针。

另一个是表头数组的表头结点,如表6-4-8所示。
在这里插入图片描述
其中 data是数据域,存储某结点的数据信息。firstchil是头指针域,存储该结点的孩子链表的头指针。

以下是我们的孩子表示法的结构定义代码。

  1. /*树的孩子表示法的结构定义*/
  2. #define MAX_TREE_SIZE 100
  3. typedef int TElemType;/*树结点的数据类型*/
  4. typedef struct CTNode /*孩子结点*/
  5. {
  6. int child;
  7. struct CTNode* next;
  8. }*ChildPtr;
  9. typedef struct /*表头结点*/
  10. {
  11. TElemType data;
  12. ChildPtr firstchild;
  13. } CTBox;
  14. typedef struct /*树结构*/
  15. {
  16. PTNode nodes[MAX_TREE_SIZE];/*结点数组*/
  17. int r, n; /*根的位置和结点数*/
  18. } CTree;

发表评论

表情:
评论列表 (有 0 条评论,316人围观)

还没有评论,来说两句吧...

相关阅读

    相关 数据结构————双亲表示

    数据结构——树——双亲表示法 我们人可能因为种种原因,没有孩子,但无论是谁都不可能是从石头里蹦出来的,孙悟空显然不能算是人,所以是人一定会有父母。树这种结构也不例外,除了

    相关 数据结构————表示

    树的定义: 树状图是一种数据结构,它是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它