From f744410a4ca89fa7cc7d16d9d4572d815fee24fa Mon Sep 17 00:00:00 2001 From: wjf-hs Date: Tue, 25 Jun 2024 13:36:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=88=E6=B7=BB=E5=8A=A0=E4=BA=86color?= =?UTF-8?q?=E8=AF=BB=E5=8F=96=E5=92=8C=E8=AE=BE=E7=BD=AE=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/tree.h | 5 +++++ src/tree.c | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/include/tree.h b/include/tree.h index 0840c1a..abb2883 100644 --- a/include/tree.h +++ b/include/tree.h @@ -13,6 +13,11 @@ #include "common.h" +typedef enum { + RED = 0x01, + BLACK = 0x02, +}rbt_color; + struct _tree_node { void *obj; diff --git a/src/tree.c b/src/tree.c index 09017ef..d800415 100644 --- a/src/tree.c +++ b/src/tree.c @@ -993,13 +993,53 @@ bool tree_avl_init(struct _tree *self, uint32_t obj_size) self->min = tree_min; self->_root = NULL; + return true; +} +rbt_color tree_color(struct _tree_node* node) +{ + assert(node != NULL); + return node->color; +} + +bool tree_set_color(struct _tree_node* node, rbt_color color) +{ + assert(node != NULL); + node->color = color; return true; } bool tree_rb_init(struct _tree *self, uint32_t obj_size) { + assert(self != NULL); + self->_obj_size = obj_size; + self->_size = 0; + // self->_capacity = 64; + // self->_ratio = 2; + self->_right_priority = false; + + self->insert = tree_avl_insert; + self->delete = tree_avl_delete; + self->clear = tree_clear; + self->empty = tree_empty; + self->size = tree_size; + self->destory = tree_destory; + self->preorder = tree_avl_preorder; + self->inorder = tree_avl_inorder; + self->postorder = tree_avl_postorder; + self->breadth = tree_avl_breadth; + self->order = tree_order; + self->find = tree_avl_find; + self->height = tree_height; + self->rebalance = tree_avl_rebalance; + self->find_max = tree_find_max; + self->find_min = tree_find_min; + self->max = tree_max; + self->min = tree_min; + + self->_root = NULL; + return true; } tree_t tree_new(void)