From 0465cc44a3e61bc55e8d22e99c388adef1ab0d70 Mon Sep 17 00:00:00 2001 From: a bellenir Date: Tue, 5 Aug 2014 22:43:53 +0000 Subject: [PATCH] dont pass what can be calculated; remove unnecessary args --- source/rb/rb.c | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/source/rb/rb.c b/source/rb/rb.c index abb678a..ac7eb4b 100644 --- a/source/rb/rb.c +++ b/source/rb/rb.c @@ -39,10 +39,10 @@ static rb_color_t node_color(rb_node_t* node){ } //NODE:the node to be inserted -static void rb_tree_recolor( - rb_node_t* node, rb_node_t* parent, - rb_node_t* grandparent, rb_node_t* uncle -){ +static void rb_tree_recolor(rb_node_t* node){ + rb_node_t* parent = node->parent; + rb_node_t* grandparent = (parent ? parent->parent : NULL); + rb_node_t* uncle = (grandparent ? (parent == grandparent->left ? grandparent->right : grandparent->left) : NULL); if(NULL == parent){ node->color = BLACK; }else if(BLACK == node_color(parent)){ @@ -55,35 +55,32 @@ static void rb_tree_recolor( //TODO } } -static void rb_tree_insert_node(rb_tree_t* tree, - rb_node_t* node, rb_node_t* parent, - rb_node_t* grandparent, rb_node_t* uncle -){ +static void rb_tree_insert_node(rb_tree_t* tree, rb_node_t* node, rb_node_t* parent){ if(NULL == parent){ /* inserting root of the tree */ tree->root = node; - rb_tree_recolor(node, parent, grandparent, uncle); + rb_tree_recolor(node); }else if(node->contents < parent->contents){ if(parent->left){ - rb_tree_insert_node(tree, node, parent->left, parent, parent->right); + rb_tree_insert_node(tree, node, parent->left); }else{ node->parent = parent; parent->left = node; - rb_tree_recolor(node, parent, grandparent, uncle); + rb_tree_recolor(node); } }else{ if(parent->right){ - rb_tree_insert_node(tree, node, parent->right, parent, parent->left); + rb_tree_insert_node(tree, node, parent->right); }else{ node->parent = parent; parent->right = node; - rb_tree_recolor(node, parent, grandparent, uncle); + rb_tree_recolor(node); } } } rb_node_t* rb_tree_insert(rb_tree_t* tree, int value){ rb_node_t* new_node = rb_node_new(value); - rb_tree_insert_node(tree, new_node, tree->root, NULL, NULL); + rb_tree_insert_node(tree, new_node, tree->root); return new_node; } -- 2.52.0