ROSS
avl_tree.h
Go to the documentation of this file.
1#ifndef INC_avl_tree_h
2#define INC_avl_tree_h
3
4#include "ross-types.h"
5
6/* Copied and modified from http://pine.cs.yale.edu/pinewiki/C/AvlTree google cache */
7
8/* implementation of an AVL tree with explicit heights */
9
10struct avlNode {
11 struct avlNode *child[2]; /* left and right */
13 int height;
14 struct avlNode *next; /* for ROSS weird linked-list memory */
15};
16
17/* empty avl tree is just a null pointer */
18
19#define AVL_EMPTY (0)
20
21/* free a tree */
22void avlDestroy(AvlTree t);
23
24/* return the height of a tree */
26
27/* return nonzero if key is present in tree */
29
30/* insert a new element into a tree */
31/* note *t is actual tree */
32void avlInsert(AvlTree *t, tw_event *key);
33
34/* run sanity checks on tree (for debugging) */
35/* assert will fail if heights are wrong */
37
38/* print all keys of the tree in order */
39void avlPrintKeys(AvlTree t);
40
41/* delete and return minimum value in a tree */
43
45
46AvlTree avl_alloc(void);
47
48void avl_free(AvlTree t);
49
50#endif /* INC_avl_tree_h */
void avlPrintKeys(AvlTree t)
Definition avl_tree.c:233
int avlSearch(AvlTree t, tw_event *key)
Definition avl_tree.c:39
tw_event * avlDelete(AvlTree *t, tw_event *key)
Definition avl_tree.c:270
void avlSanityCheck(AvlTree t)
Definition avl_tree.c:81
void avlInsert(AvlTree *t, tw_event *key)
Definition avl_tree.c:172
AvlTree avl_alloc(void)
Definition avl_tree.c:330
tw_event * avlDeleteMin(AvlTree *t)
Definition avl_tree.c:245
void avlDestroy(AvlTree t)
Definition avl_tree.c:14
void avl_free(AvlTree t)
Definition avl_tree.c:346
int avlGetHeight(AvlTree t)
Definition avl_tree.c:27
struct tw_event tw_event
Definition ross-types.h:24
struct avlNode * AvlTree
Definition ross-types.h:28
Definition of ROSS basic types.
int height
Definition avl_tree.h:13
struct avlNode * next
Definition avl_tree.h:14
struct avlNode * child[2]
Definition avl_tree.h:11
tw_event * key
Definition avl_tree.h:12
Event Stucture.
Definition ross-types.h:277