FastLED 3.9.15
Loading...
Searching...
No Matches

◆ insertFixup()

template<typename T, typename Compare = less<T>, typename Allocator = allocator_slab<char>>
void fl::RedBlackTree< T, Compare, Allocator >::insertFixup ( Node * z)
inlineprivate

Definition at line 96 of file rbtree.h.

96 {
97 while (z->parent != nullptr && z->parent->parent != nullptr && z->parent->color == RED) {
98 if (z->parent == z->parent->parent->left) {
99 Node* y = z->parent->parent->right;
100 if (y != nullptr && y->color == RED) {
101 z->parent->color = BLACK;
102 y->color = BLACK;
103 z->parent->parent->color = RED;
104 z = z->parent->parent;
105 } else {
106 if (z == z->parent->right) {
107 z = z->parent;
108 rotateLeft(z);
109 }
110 z->parent->color = BLACK;
111 z->parent->parent->color = RED;
112 rotateRight(z->parent->parent);
113 }
114 } else {
115 Node* y = z->parent->parent->left;
116 if (y != nullptr && y->color == RED) {
117 z->parent->color = BLACK;
118 y->color = BLACK;
119 z->parent->parent->color = RED;
120 z = z->parent->parent;
121 } else {
122 if (z == z->parent->left) {
123 z = z->parent;
124 rotateRight(z);
125 }
126 z->parent->color = BLACK;
127 z->parent->parent->color = RED;
128 rotateLeft(z->parent->parent);
129 }
130 }
131 }
132 root_->color = BLACK;
133 }
void rotateRight(Node *x)
Definition rbtree.h:78
Node * root_
Definition rbtree.h:54
void rotateLeft(Node *x)
Definition rbtree.h:60

Referenced by fl::RedBlackTree< value_type, PairCompare, Allocator >::insertImpl().

+ Here is the caller graph for this function: