Files
cAI/cKit/Search/c_BST.h
T

41 lines
1.5 KiB
C
Raw Normal View History

2026-08-10 01:21:15 +08:00
#ifndef INCLUDED_C_BST_H
#define INCLUDED_C_BST_H
#ifndef INCLUDED_C_BASE_H
#include <c_Base.h>
#endif /*INCLUDED_C_BASE_H*/
/* ------------------------------------------------------------------------------------------------------------------ */
/* */
// Forward declaration of internal node structure
typedef struct c_BSTNode {
struct c_BSTNode* left; // Pointer to left child
struct c_BSTNode* right; // Pointer to right child
// Node payload layout: key block followed immediately by the value block in memory
} c_BSTNode_t;
// Binary Search Tree Context Structure
typedef struct {
c_BSTNode_t* root; // Root node pointer
c_size_t key_size; // Size of each key in bytes
c_size_t val_size; // Size of each value in bytes
c_size_t size; // Total number of nodes in the tree
int (*compar)(const void*, const void*); // Key comparison rule pointer
} c_BST_t;
/* ------------------------------------------------------------------------------------------------------------------ */
/* */
c_err_t c_BST_Init(c_BST_t* tree, c_size_t key_size, c_size_t val_size, int (*compar)(const void*, const void*)) ;
void c_BST_Destroy(c_BST_t* tree);
c_err_t c_BST_Clear(c_BST_t* tree);
c_bool_t c_BST_Contains(const c_BST_t* tree, const void* key);
c_err_t c_BST_Put(c_BST_t* tree, const void* key, const void* val);
void* c_BST_Get(const c_BST_t* tree, const void* key);
c_err_t c_BST_Delete(c_BST_t* tree, const void* key) ;
#endif /*INCLUDED_C_BST_H*/