5 * Copyright (c) 2010-2013 by Manfred Moitzi
14 typedef struct tree_node node_t;
23 typedef node_t* nodeptr;
25 /* common binary tree functions */
26 void ct_delete_tree(node_t *root);
27 int ct_compare(PyObject *key1, PyObject *key2);
28 PyObject *ct_get_item(node_t *root, PyObject *key);
29 node_t *ct_find_node(node_t *root, PyObject *key);
30 node_t *ct_succ_node(node_t *root, PyObject *key);
31 node_t *ct_prev_node(node_t *root, PyObject *key);
32 node_t *ct_max_node(node_t *root);
33 node_t *ct_min_node(node_t *root);
34 node_t *ct_floor_node(node_t *root, PyObject *key);
35 node_t *ct_ceiling_node(node_t *root, PyObject *key);
36 int ct_index_of(node_t *root, PyObject *key);
37 node_t *ct_node_at(node_t *root, int index);
39 /* unbalanced binary tree */
40 int ct_bintree_insert(node_t **root, PyObject *key, PyObject *value);
41 int ct_bintree_remove(node_t **root, PyObject *key);
43 /* avl-tree functions */
44 int avl_insert(node_t **root, PyObject *key, PyObject *value);
45 int avl_remove(node_t **root, PyObject *key);
47 /* rb-tree functions */
48 int rb_insert(node_t **root, PyObject *key, PyObject *value);
49 int rb_remove(node_t **root, PyObject *key);