【发布时间】:2018-12-01 22:50:09
【问题描述】:
我有一个创建 AVL 树的 C 代码。我已经编写了所有函数来创建一棵树,但我卡在了删除树的最后一步。该功能根本不起作用。这是我的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];
那么你能诊断出问题吗?感谢您的帮助。
【问题讨论】:
-
“根本行不通”是什么意思?它有段错误吗?看似成功,但您认为您有内存泄漏?
-
没有错误,tree_free()函数开始工作时程序结束。
标签: c sorting data-structures binary-search-tree