红黑树的实现源码
作者 佚名技术
来源 程序设计
浏览
发布时间 2012-06-29
t;color = RED; root = rb_rotate_left(gparent, root); } } } root->color = BLACK; return root; } static rb_node_t* rb_erase_rebalance(rb_node_t *node, rb_node_t *parent, rb_node_t *root) { rb_node_t *other, *o_left, *o_right; while ((!node || node->color == BLACK) && node != root) { if (parent->left == node) { other = parent->right; if (other->color == RED) { other->color = BLACK; parent->color = RED; root = rb_rotate_left(parent, root); other = parent->right; } if ((!other->left || other->left->color == BLACK) && (!other->right || other->right->color == BLACK)) { other->color = RED; node = parent; parent = node->parent; } else { if (!other->right || other->right->color == BLACK) { if ((o_left = other->left)) { o_left->color = BLACK; } other->color = RED; root = rb_rotate_right(other, root); other = parent->right; } other->color = parent->color; parent->color = BLACK; if (other->right) { other->right->color = BLACK; } root = rb_rotate_left(parent, root); node = root; break; } } else { other = parent->left; if (other->color == RED) { other->color = BLACK; parent->color = RED; root = rb_rotate_right(parent, root); other = parent->left; } if ((!other->left || other->left->color == BLACK) && (!other->right || other->right->color == BLACK)) { other->color = RED; node = parent; parent = node->parent; } else { if (!other->left || other->left->color == BLACK) { if ((o_right = other->right)) { o_right->color = BLACK; } other->color = RED; root = rb_rotate_left(other, root); other = parent->left; } other->color = parent->color; parent->color = BLACK; if (other->left) { other->left->color = BLACK; } root = rb_rotate_right(parent, root); |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: C和C++语言学习总结(二)下一篇: C++指针和数组
关于红黑树的实现源码的所有评论