bond/include/lib/avl_tree.h

50 lines
1.2 KiB
C
Raw Normal View History

2018-03-24 00:58:24 +00:00
#ifndef LIB_AVL_TREE_H
#define LIB_AVL_TREE_H
2017-02-01 03:26:08 +00:00
2018-01-26 08:43:22 +00:00
#include "type.h"
#include "lib/sxtdlib.h"
2017-02-01 03:26:08 +00:00
2018-03-24 00:58:24 +00:00
struct avl_tree_node
2017-02-01 03:26:08 +00:00
{
2018-03-24 00:58:24 +00:00
struct avl_tree_node *left;
struct avl_tree_node *right;
struct avl_tree_node *parent;
2017-02-01 03:26:08 +00:00
2018-03-24 00:58:24 +00:00
int32 height;
};
2017-02-01 03:26:08 +00:00
/*
* A comparison function between tree_node and your_node
* Returns:
* < 0 if tree_node < your_node
* = 0 if tree_node == your_node
* > 0 if tree_node > your_node
*/
2018-03-24 00:58:24 +00:00
struct avl_tree
2017-02-01 03:26:08 +00:00
{
2018-03-24 00:58:24 +00:00
callback_func compare;
struct avl_tree_node *root;
};
2017-02-01 03:26:08 +00:00
2018-03-24 00:58:24 +00:00
struct avl_tree_node *SXAPI lb_avl_tree_search(struct avl_tree *tree, struct avl_tree_node *entry);
2017-02-01 03:26:08 +00:00
2018-03-24 00:58:24 +00:00
void SXAPI lb_avl_tree_insert(struct avl_tree *tree, struct avl_tree_node *entry);
2017-02-01 03:26:08 +00:00
2018-03-24 00:58:24 +00:00
struct avl_tree_node *SXAPI lb_avl_tree_delete(struct avl_tree *tree, struct avl_tree_node *entry);
2017-02-01 03:26:08 +00:00
2018-03-24 00:58:24 +00:00
void SXAPI lb_avl_tree_init(struct avl_tree *tree, callback_func compare);
2017-02-01 03:26:08 +00:00
2018-03-24 00:58:24 +00:00
struct avl_tree_node *SXAPI lb_avl_tree_largest(struct avl_tree *tree);
2017-02-01 03:26:08 +00:00
2018-03-24 00:58:24 +00:00
struct avl_tree_node *SXAPI lb_avl_tree_smallest(struct avl_tree *tree);
2017-02-01 03:26:08 +00:00
2018-03-24 00:58:24 +00:00
struct avl_tree_node *SXAPI lb_avl_tree_larger(struct avl_tree_node *entry);
2017-02-01 03:26:08 +00:00
2018-03-24 00:58:24 +00:00
struct avl_tree_node *SXAPI lb_avl_tree_smaller(struct avl_tree_node *entry);
2017-02-01 03:26:08 +00:00
2018-03-24 00:58:24 +00:00
bool SXAPI lb_avl_tree_validate(struct avl_tree *tree);
2017-02-01 03:26:08 +00:00
2018-03-24 00:58:24 +00:00
int32 SXAPI lb_avl_tree_size(struct avl_tree *tree);
2017-02-01 03:26:08 +00:00
#endif