From 85f97d27207a5a29357da0c8a6abe8e48bf8ea2c Mon Sep 17 00:00:00 2001 From: paul Date: Fri, 13 Dec 2002 20:15:29 +0000 Subject: Initial revision --- ospf6d/ospf6_bintree.h | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 ospf6d/ospf6_bintree.h (limited to 'ospf6d/ospf6_bintree.h') diff --git a/ospf6d/ospf6_bintree.h b/ospf6d/ospf6_bintree.h new file mode 100644 index 00000000..fad8bbdd --- /dev/null +++ b/ospf6d/ospf6_bintree.h @@ -0,0 +1,47 @@ + +#ifndef _BINTREE_H_ +#define _BINTREE_H_ + +struct bintree_node +{ + struct bintree *tree; + + struct bintree_node *parent; + int parent_link; + +#define BL_LEFT 0 +#define BL_RIGHT 1 +#define BL_MAX 2 + struct bintree_node *link[BL_MAX]; +#define bl_left link[BL_LEFT] +#define bl_right link[BL_RIGHT] + + void *data; +}; + +struct bintree +{ + int count; + struct bintree_node *root; + + int (*cmp) (void *, void *); +}; + +void *bintree_lookup (void *data, struct bintree *tree); +void *bintree_lookup_min (struct bintree *tree); +void *bintree_lookup_max (struct bintree *tree); + +int bintree_add (void *data, struct bintree *tree); +int bintree_remove (void *data, struct bintree *tree); + +void bintree_head (struct bintree *tree, struct bintree_node *node); +int bintree_end (struct bintree_node *node); +void bintree_next (struct bintree_node *node); + +struct bintree *bintree_create (); +void bintree_delete (struct bintree *); + +void bintree_print (void (*print) (int, void *), struct bintree *); + +#endif /*_BINTREE_H_*/ + -- cgit v1.2.3