У меня есть код C, который создает дерево AVL.Я создал все функции для создания дерева, но застрял на последнем шаге - удалении дерева.Функция просто не работает.Вот моя tree_free
функция;
void tree_free(TREE tree){
if (tree != NULL){
tree_free(tree->root->right);
free(tree->root->data);
tree_free(tree->root->left);
free(tree);
}
}
Так что для тех, кто захочет увидеть функцию вставки и структуры, я поделюсь кодами этих функций ниже.
Вот как я вставляю числа в моё дерево;
void avl_insert(TREE tree, unsigned long long data){
tree->root = avl_insert_recursive(tree->root, data);
}
А вот функция avl_insert_recursive
;
NODE avl_insert_recursive(NODE node, unsigned long long data){
int balance = 0;
if( node == NULL){
return(node_init(data));
}
if( data < node->data ){
node->left = avl_insert_recursive(node->left, data);
return node;
}else if( data > node->data){
node->right = avl_insert_recursive(node->right, data);
return node;
}else{
return node;
}
node->height = 1 + max(local_height(node->left), local_height(node->right));
return node;
}
Наконец, яхочу поделиться с вами структурами, которые я создал для типов данных TREE и NODE .
typedef struct NODE_s *NODE;
typedef struct NODE_s
{
NODE right;
NODE left;
unsigned long long data;
int height;
} NODE_t[1];
typedef struct TREE_s *TREE;
typedef struct TREE_s
{
NODE root;
} TREE_t[1];
Итак, вы можете диагностировать проблему?Спасибо за помощь.