The LevAWC Project
 All Data Structures Files Functions Variables Typedefs Enumerations Macros Pages
bitree.h
Go to the documentation of this file.
1 /*
2  * _____
3  * ANSI / ___/
4  * / /__
5  * \___/
6  *
7  * Filename: bitree.h
8  * Author : Kyle Loudon/Dan Levin
9  * Date : Fri Mar 22 12:40:45 GMT 2013
10  * Version : 0.51
11  * ---
12  * Description: A basic, binary search tree ADT - written in ANSI C.
13  *
14  * Date Revision message
15  * 130217 Created this file
16  * 150331 This code ready for version 0.51
17  *
18  */
23 #ifndef _BITREE_H_
24 #define _BITREE_H_
25 
26 #include <stdio.h>
27 #include <stdlib.h>
28 #include <string.h>
29 #include <malloc.h>
30 #include <assert.h>
31 
32 #include "utils.h"
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
43  typedef struct BiTreeNode_ *BiTreeNode;
44 
50  typedef struct BiTree_ *BiTree;
51 
52  /* FUNCTION DECLARATIONS */
53 
69  BiTree BITREEinit(void (*destroy)(void *data));
70 
89  void BITREEdestroy(BiTree tree);
90 
107  void BITREEsetcompare(BiTree tree, int (*compare)(const void *key1, const void *key2));
108 
137  int BITREEinsleft(BiTree tree, BiTreeNode node, const void *data);
138 
167  int BITREEinsright(BiTree tree, BiTreeNode node, const void *data);
168 
196  int BITREEinsert(BiTree tree, const void *data);
197 
227  int BITREElookup(BiTree tree, void **data);
228 
265  int BITREEremove(BiTree tree, void **data);
266 
289  void BITREEremleft(BiTree tree, BiTreeNode node);
290 
313  void BITREEremright(BiTree tree, BiTreeNode node);
314 
345  BiTree BITREEmerge(BiTree left, BiTree right, const void *data);
346 
355  int BITREEsize(BiTree tree);
356 
364  BiTreeNode BITREEroot(BiTree tree);
365 
375  int BITREEis_eob(BiTreeNode node);
376 
386  int BITREEis_leaf(BiTreeNode node);
387 
395  void *BITREEdata(BiTreeNode node);
396 
405  BiTreeNode BITREEleft(BiTreeNode node);
406 
415  BiTreeNode BITREEright(BiTreeNode node);
416 
425  int BITREEheight(BiTree tree);
426 
442  void BITREEprint(BiTree tree, void (*callback)(const void *data));
443 
465  void BITREEpreorder(BiTree tree, void (*callback)(const void *data));
466 
490  void BITREEinorder(BiTree tree, void (*callback)(const void *data));
491 
513  void BITREEpostorder(BiTree tree, void (*callback)(const void *data));
514 
515 #ifdef __cplusplus
516 }
517 #endif
518 
519 #endif /* _BITREE_H_ */