summaryrefslogtreecommitdiff
path: root/src/03/rb_tree.h
blob: ca423a434afc054e2d8cbd52fa36b84da729a304 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdbool.h>

enum Colour {
  black = 0x01,
  red = 0x00,
};

typedef struct rb_node {
  struct rb_node *left;
  struct rb_node *parent;
  struct rb_node *right;
  enum Colour colour;
  int value;
} RBTree;

RBTree *rb_tree_initialize(int value);
RBTree *rb_tree_initialize_with(int value, enum Colour colour);
RBTree *rb_tree_insert(RBTree *tree, int value);
bool rb_equals(RBTree *tree, RBTree *other_tree);
bool rb_tree_is_valid(RBTree *tree);
int rb_tree_size(RBTree *tree);
void rb_tree_inspect(RBTree *tree);
int rb_tree_height(RBTree *tree);