/* btree.h Pedro Flynn - pflynn@microsoftsucks.org */ #ifndef BTREE_H #define BTREE_H #include #include struct btree_node{ void* bn_data; struct btree_node* bn_left; struct btree_node* bn_right; }; struct btree{ int b_size; void (*b_destroy)(void* data); struct btree_node* b_root; }; struct btree* btree_create(void (*destroy)(void *data)); struct btree_node* btree_insert_node_left(struct btree* btree,struct btree_node* root,const void* data); struct btree_node* btree_insert_node_right(struct btree* btree,struct btree_node* root,const void* data); int btree_remove_node_left(struct btree* btree,struct btree_node* node); int btree_remove_node_right(struct btree* btree,struct btree_node* node); void btree_destroy(struct btree* btree); struct btree* btree_merge(struct btree* left,struct btree* right,void* data); /*debug !*/ void printnodes(const struct btree* tree,const struct btree_node* node); #endif