0

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

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

4

1 回答 1

4

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

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

或者

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.

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

另请注意,释放节点时,必须branch先释放数组,然后再释放节点。

free (node->branch);
free (node);
于 2013-07-26T11:53:00.770 回答