我想在c中创建一个多分支树,你能帮帮我吗。
树形结构:
O
/|\
/ | \
O O O
/|\ \
/ | \ \
O O O O
答案 0 :(得分:1)
最常见的方法是First-Child / Next-Sibling树。它只使用2个指针来保留任意数量的子节点,与链表不同。
typedef struct node {
struct node *child;
struct node *next;
} node;
答案 1 :(得分:0)
这是一个基本的树结构:
typedef struct node {
struct node *left;
struct node *right;
char *string;
} node;
您可以通过保存指向节点的指针数组而不仅仅是向左和向右来轻松地扩展它以获得更多分支,但它不会那么高效。
答案 2 :(得分:0)
如果子节点的数量是固定的,或者具有最大数量,则可以使用指针数组:
typedef struct node {
struct nodes *childs[];
char *string;
} node;
或者您可以动态分配它:
typedef struct node {
struct nodes **childs;
char *string;
} node;
这允许直接访问孩子 另一种选择是使用链表来保存孩子。通过这种方式,您可以根据自己的喜好添加/删除,但却失去了直接访问权限。