用C语言创建一个n分支树,找不到任何例子

时间:2013-07-26 11:50:38

标签: c data-structures tree

我已阅读有关链表和二叉树的内容。我无法在任何地方找到的是一个n分支树。让我更详细一点。当我们在Windows操作系统中转到系统管理器时,我们会找到一个设备列表。通常,可以单击设备以在该设备下具有另一个“子”列表。这些孩子也可能拥有自己的“孩子”名单(可能)。我在哪里可以找到这样的亲子n树程序示例/教程?

我对n-tree的意思是,它没有2个brances。它可以在层次结构的任何级别具有任意数量的分支。

1 个答案:

答案 0 :(得分:4)

对于固定数量的分支,您可以执行类似

的操作
typedef struct _node_t
{
  void *data;
  struct _node_t *branch[50];
} node_t;

OR

typedef struct _node_t
{
  void *data;
  struct _node_t **branch;
} node_t;

然后,对于每个分配的节点,分配数组中的分支数。

node_t *node;
node = malloc (sizeof (node_t));
node->branch = malloc (sizeof (node_t *) * number_of_branches_for_this_node);
//Then
node->branch[i]; //To access the branch.

要确定分支数的结束,您可能希望存储该特定节点中的分支数,或者在branch数组的最后位置存储NULL或其他幻数。

另请注意,在释放节点时,必须先释放branch阵列,然后才能释放节点。

free (node->branch);
free (node);