C中的N元树

C中的N元树,c,struct,n-ary-tree,abstract-data-type,C,Struct,N Ary Tree,Abstract Data Type,哪一个是C语言中N元树的简洁实现 特别是,我想实现一个n元树,而不是自平衡,每个节点中有大量的子节点,其中每个节点都持有一个已定义的结构,例如: struct task { char command[MAX_LENGTH]; int required_time; }; 作为第一步,您可以简单地创建一个包含任务的结构(我们称之为TreeNode),以及一组指向TreeNode的指针。此集合可以是数组(如果N是固定的)或链表(如果N是可变的)。链表将要求您声明一个附加结构(我们称之为Lis

哪一个是C语言中N元树的简洁实现

特别是,我想实现一个n元树,而不是自平衡,每个节点中有大量的子节点,其中每个节点都持有一个已定义的结构,例如:

struct task {
  char command[MAX_LENGTH];
  int required_time;
};

作为第一步,您可以简单地创建一个包含任务的结构(我们称之为TreeNode),以及一组指向TreeNode的指针。此集合可以是数组(如果N是固定的)或链表(如果N是可变的)。链表将要求您声明一个附加结构(我们称之为ListNode),该结构带有指向实际子级(树的一部分)的TreeNode指针和指向列表中下一个ListNode的指针(null,如果在列表末尾)

它可能看起来像这样:

struct task {
  char command[MAX_LENGTH];
  int required_time;
};

struct TreeNode;

struct ListNode {
  struct TreeNode * child;
  struct ListNode * next;
};

struct TreeNode {
  struct task myTask;
  struct ListNode myChildList;
};

任何n元树都可以表示为二叉树,其中在每个节点中,左指针指向第一个子树,右指针指向下一个子树

R R / | \ | B C D B -- C -- D / \ | | | E F G E -- F G
这种技术的优点是,许多算法编写起来更简单,因为它们可以在二叉树上表示,而不是在更复杂的数据结构上。

N元是指扇出度为N的树?您必须指定更多,例如非自平衡搜索树、trie、B-tree等。您是对的,我将编辑问题以添加更多细节。谢谢也谢谢Matt J的回答!
struct task {
  char command[MAX_LENGTH];
  int required_time;
};

struct node {
  struct task taskinfo;
  struct node *firstchild;
  struct node *nextsibling;
};