У меня есть дерево, определенное как,Освободить память, выделенная для дерева - C
struct tree {
char label[MAX_LENGTH];
char value[MAX_LENGTH];
struct tree *child;
struct tree *next;
};
Теперь мне нужно, чтобы освободить память, выделенную этим деревом. Я написал следующий код.
unsigned int tree_free(struct tree *root)
{
struct tree *current = NULL, *next = NULL, *child = NULL;
unsigned int freecnt = 0;
current = root;
while(current != NULL)
{
next = current->next;
child = current->child;
xfree(current);
freecnt += tree_free(child) + 1;
current = next;
}
return freecnt;
}
Этот метод возвращает количество элементов, которые он освободил, так что я могу проверить его от числа ассигнованиями. Этот код работает. Но я не уверен, что это правильный способ делать что-то.
Это реализация дерева суффикса. Для элементов с, стек, более, переполнение, StackOverflow дерево будет выглядеть
root
-s
--stack
---stackoverflow
-over
--overflow
Любые предложения по улучшению кода приветствуются.
Вы оставили несколько деталей: (1) какова структура дерева? из кода видно, что это не «ванильное» двоичное дерево. (2) что такое 'xfree'? –
Это не двоичное дерево. Это суффиксный тип реализации. xfree - это просто обертка вокруг free(). Дерево будет иметь несколько дочерних элементов не только двух, как двоичное дерево. –
отредактировал мое сообщение, чтобы было ясно. –