У меня n-арная древовидная структура только с родителями и детьми.Само spantree содержит только один узел, корень.Затем создаются узлы, которые связаны с другими узлами или корнем.Каждому узлу (включая корень) разрешено иметь до дочерних узлов MAXCHILDREN.Вот структура:
typedef struct node{
unsigned int id; //every node has different id
struct node* parent; //points to parent node
struct node* children[MAXCHILDREN]; //pointers to all children of this node
}node;
typedef struct spantree{
node root; //root node
}spantree;
Визуальная картинка:
root
___O
/ / \
O O O
/ \
O O
После того, как я создал свое дерево, я хочу полностью освободить его, но я не уверен, каким образом это сделать.Я не могу начать освобождение от корня, потому что тогда дерево сломается.Итак, я представляю, что мне нужно начинать с листьев и идти до корня?Но это значит, что я должен сначала найти самые глубокие листья, верно?Я не совсем понимаю, с чего начать.
Не думаю, что это необходимо, но для страховки я использую каждый раз, когда мне нужно создать новый узел:
node *newNode;
newNode=(node*)malloc(sizeof(node));
//then I modify it to my preferences