红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树。 红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点所包含的键值,大于等于左孩子的键值,小于等于右孩子的键值。 除了具备该特性之外,红黑树还包括许多额外的信息。 红黑树的每个节点上都有存储位表示节点的颜色,颜色是红(Red)...
RBTreeNode<T> other; //node不为空且为黑色,并且不为根节点 while ((null == node || isBlack(node)) && (node != this.rootNode) ){ //node是父节点的左孩子 if (node == parent.left){ //获取到其右孩子 other = parent.right; //node节点的兄弟节点是红色 if (isRed(other)){ setColor...
publicvoidinsert(Node node){NodeparentPointer=RedBlackTree.NULL;Nodepointer=this.root;while(this.root != RedBlackTree.NULL) { parentPointer = pointer; pointer = node.key < pointer.key ? pointer.left : pointer.right; } node.parent = parentPointer;if(parentPointer == RedBlackTree.NULL) {thi...
红黑树是特殊的二叉查找树,又名R-B树(RED-BLACK-TREE),由于红黑树是特殊的二叉查找树,即红黑树具有了二叉查找树的特性,而且红黑树还具有以下特性: 1.每个节点要么是黑色要么是红色 2.根节点是黑色 3.每个叶子节点是黑色,并且为空节点(还有另外一种说法就是,每个叶子结点都带有两个空的黑色结点(被称为黑哨兵)...
红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树。 红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点所包含的键值,大于等于左孩子的键值,小于等于右孩子的键值。 除了具备该特性之外,红黑树还包括许多额外的信息。
publicclassRedBlackTree{privatestaticfinalbooleanRED=true;privatestaticfinalbooleanBLACK=false;privatestaticclassNode{intdata;booleancolor;Nodeleft,right,parent;Node(intdata){this.data=data;this.color=RED;// 新插入节点一般为红色left=right=parent=null;}}} ...
对于一个红黑树tree,哨兵变量RedBlackTree.NULL(下文代码中)是一个和其它节点有同样属性的节点,它的颜色(color)属性是黑色,其它属性可以任意取值。 我们使用哨兵变量是因为我们可以把一个节点node的子节点null当成一个普通节点。 在这里,我们使用哨兵变量RedBlackTree.NULL代替树中所有的null(所有的叶子节点及根节点的...
红黑树(Red Black Tree)是一种自平衡的二叉搜索树(Self-balancing Binary Search Tree)。以前也叫做平衡二叉 B 树(Symmetric Binary B-tree)。预备知识树的知识框架结构如下图所示: 推荐学习:MySql从入门…
红黑树(Red-Black Tree),它一种特殊的二叉查找树。执行查找、插入、删除等操作的时间复杂度为O(logn)。 红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点所包含的键值,大于等于左孩子的键值,小于等于右孩子的键值。 红黑树的每个节点上都有存储位表示节点的颜色,颜色是红(Red)或黑(Black)...
code/data_structure/RedBlackTree.java/ Jump to 304 lines (259 sloc)7.93 KB RawBlame importjava.util.LinkedList; importjava.util.Queue; publicclassRedBlackTree<KeyextendsComparable<Key>,Value> { privatestaticfinalbooleanRED=true; privatestaticfinalbooleanBLACK=false; ...