aboutsummaryrefslogtreecommitdiff
path: root/sem3/algo/mm6/tree.h
blob: d94304f350463bb7e26626e2fddde74b27369140 (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
#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