# 2.4.4.1 Setup

typedef struct ZixTreeImpl ZixTree

  A balanced binary search tree.

typedef int (*ZixTreeCompareFunc)(const void *a, const void *b, const void *user_data)

  Function for comparing two Tree elements.

typedef void (*ZixTreeDestroyFunc)(void *ptr, const void *user_data)

  Function to destroy a Tree element.

ZixTree *zix_tree_new(ZixAllocator *allocator, bool allow_duplicates, ZixTreeCompareFunc cmp, void *cmp_data, ZixTreeDestroyFunc destroy, const void *destroy_user_data)

  Create a new (empty) tree.

void zix_tree_free(ZixTree *t)

  Free `t`

size_t zix_tree_size(const ZixTree *t)

  Return the number of elements in `t`