#include #include typedef struct tree_node tree_node_t; typedef struct tree tree_t; typedef char* tree_node_val_t; struct tree_node { tree_node_t* left; tree_node_t* right; tree_node_val_t data; }; struct tree { tree_node_t* root; void (*insert)(tree_t* tree, tree_node_val_t value); uint8_t (*exists)(tree_t* tree, tree_node_val_t value); int8_t (*cmp)(tree_t* tree, tree_node_val_t value1, tree_node_val_t value2); }; void tree_insert(tree_t* tree, tree_node_val_t value); uint8_t tree_exists(tree_t* tree, tree_node_val_t value); int8_t tree_cmp(tree_t* tree, tree_node_val_t value1, tree_node_val_t value2); extern tree_t* tree_create();