c语言中的多分支树
我想用c语言创建一个多分支树,你们能帮我吗 树结构:c语言中的多分支树,c,data-structures,tree,C,Data Structures,Tree,我想用c语言创建一个多分支树,你们能帮我吗 树结构: O /|\ / | \ O O O /|\ \ / | \ \ O O O O typedef struct node { struct node *left; struct node
O
/|\
/ | \
O O O
/|\ \
/ | \ \
O O O O
typedef struct node {
struct node *left;
struct node *right;
char *string;
} node;
下面是一个基本的树结构:
O
/|\
/ | \
O O O
/|\ \
/ | \ \
O O O O
typedef struct node {
struct node *left;
struct node *right;
char *string;
} node;
您可以通过持有指向节点的指针数组(而不仅仅是左、右指针)轻松地将其扩展到更多分支,但效率不高 如果子节点的数量是固定的,或具有最大数量,则可以使用指针数组:
typedef struct node {
struct nodes *childs[];
char *string;
} node;
或者您可以动态分配它:
typedef struct node {
struct nodes **childs;
char *string;
} node;
这允许直接访问孩子。另一种选择是使用链表来保存孩子。通过这种方式,您可以添加/删除任意数量的内容,但您将失去直接访问权。最常见的方法是第一个子树/下一个兄弟树。它只使用2个指针来保存任意数量的子对象,这与链表不同
typedef struct node {
struct node *child;
struct node *next;
} node;
首先尝试使用简单树,然后扩展它以完成任务。每次节点的分支数是否相同?或者分支的数量会有所不同吗?您可能需要检查:和分支的数量在运行时会有所不同。