From 0901b084173affab80082b2d7fac1cd7336a3eb4 Mon Sep 17 00:00:00 2001 From: wjf-hs Date: Thu, 27 Jun 2024 21:27:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/tree.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/tree.c b/src/tree.c index d6ce61d..ba335be 100644 --- a/src/tree.c +++ b/src/tree.c @@ -1299,16 +1299,21 @@ bool tree_rb_delete(struct _tree* self, void* obj) } else if(node->left != NULL && node->right == NULL) { + // node->left must be red tmp = node->left; memmove(node->obj,tmp->obj, self->_obj_size); } else if(node->left == NULL && node->right != NULL) { + // node->right must be red tmp = node->right; memmove(node->obj,tmp->obj, self->_obj_size); } else { + // 1. find the min node in right subtree + // 2. replace the node with min node + // 3. delete the min node tmp = self->find_min(self, node->right); memmove(node->obj, tmp->obj, self->_obj_size); if(tmp->right != NULL)