group
group__libshare__memtree
A self-balancing tree data structure.
B-Tree Index Map
Tree nodes are composed of a data segment, a "left branch", and a "right branch". Nodes that do not branch are called leafs.
typedef void(* shtree_f)(shtree_t *)
void shtree_data_set
(shtree_t *node, void *data)
Set a data segment for a tree node.
void* shtree_data_get
(shtree_t *node)
Get a data segment from a tree node.
shtree_t* shtree_new
(shtree_t *tree, void *data)
shtree_t* shtree_init
(int flags)
void shtree_free_node
(shtree_t *node)
void shtree_remove_branch
(shtree_t *node)
shtree_t* shtree_left_new
(shtree_t *tree, void *data)
shtree_t* shtree_right_new
(shtree_t *tree, void *data)
shtree_t* shtree_right
(shtree_t *tree)
shtree_t* shtree_left
(shtree_t *tree)
int shtree_leaf
(shtree_t *tree)
shtree_t* shtree_root
(shtree_t *node)
shtree_t* shtree_parent
(shtree_t *node)
int shtree_flags
(shtree_t *node)
int shtree_root_flags
(shtree_t *node)
void shtree_traverse_pre
(shtree_t *node, shtree_f proc)
void shtree_traverse_in
(shtree_t *node, shtree_f proc)
void shtree_traverse_post
(shtree_t *node, shtree_f proc)
void shtree_traverse
(shtree_t *node, int order, shtree_f proc)
void shtree_free
(shtree_t **tree_p)
SHTREE_PERM
(1 << 10)
Do not allow nodes to be removed.
SHTREE_RECYCLE
(1 << 11)
Re-use old intermediate branch nodes that are deleted.
SHTREE_DEALLOC
(1 << 12)
De-allocate the data segments provided.