-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtree.h
More file actions
28 lines (23 loc) · 730 Bytes
/
tree.h
File metadata and controls
28 lines (23 loc) · 730 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
struct node
{
void *data;
struct node *l,*r; /* BST pointers */
struct node *next; /* Linked list for traverse etc */
};
enum llorder {O_NONE,O_IN,O_PRE,O_POST,O_LEVEL};
struct dict
{
struct node *head;
enum llorder order;
int (*compare)(void *a, void *b);
};
struct dict *new_dict(int (*compare)(void *a, void *b));
void free_dict(struct dict *dict);
int add_unique_node(struct dict *d,void *data);
void add_node(struct dict *d,void *data);
void *change_node(struct dict *d,void *data);
void *find_node(struct dict *d,void *k);
void *delete_node(struct dict *d,void *data);
void relink_inorder(struct dict *d);
void visit_nodes(struct dict *d,void (*visit)(void *data));
void balance_tree(struct dict *d);