Любое n-арное дерево может быть представлено в виде двоичного дерева, где в каждом узле левый указатель указывает на первого потомка, а правый указатель указывает на следующего брата.
R R
/ | \ |
B C D B -- C -- D
/ \ | | |
E F G E -- F G
Итак, ваш случай будет:
struct task {
char command[MAX_LENGTH];
int required_time;
};
struct node {
struct task taskinfo;
struct node *firstchild;
struct node *nextsibling;
};
Преимущество этого метода заключается в том, что многие алгоритмы проще писать, поскольку они могут быть выражены в двоичном дереве, а не в более сложной структуре данных.