aboutsummaryrefslogtreecommitdiff
path: root/sem3/algo/mm6/tree.h
blob: 0d1c5c6ce4e0a12a64d649d29a8571adf546b685 (plain)
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
29
30
31
#ifndef TREE_H
#define TREE_H

#include <stdbool.h>

#define CHILD_LEFT 0
#define CHILD_RIGHT 1

typedef struct node_struct{
	struct node_struct *p;
	struct node_struct *children[2];
	unsigned int index;
	bool black;
	char *value;
} node_t;

typedef struct {
	node_t *root;
} tree_t;

void tree_print(tree_t *tree);

node_t *tree_insert(tree_t *tree, unsigned int index, char *val);
node_t *tree_insert_pleb(tree_t *tree, unsigned int index, char *val);

void node_rotate(tree_t *tree, node_t *x, int dir);

char *tree_search(tree_t *tree, unsigned int index);


#endif