我已阅读有关链表和二叉树的内容。我无法在任何地方找到的是一个n分支树。让我更详细一点。当我们在Windows操作系统中转到系统管理器时,我们会找到一个设备列表。通常,可以单击设备以在该设备下具有另一个“子”列表。这些孩子也可能拥有自己的“孩子”名单(可能)。我在哪里可以找到这样的亲子n树程序示例/教程?
我对n-tree的意思是,它没有2个brances。它可以在层次结构的任何级别具有任意数量的分支。
答案 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);