@@ -26,7 +26,7 @@ public void testNullInsertion() {
26
26
public void testTreeContainsNull () {
27
27
assertFalse (tree .contains (null ));
28
28
}
29
- /*
29
+
30
30
@ Test
31
31
public void testLeftLeftRotation () {
32
32
@@ -118,11 +118,12 @@ public void testRightRightRotation() {
118
118
assertCorrectParentLinks (tree .root , null );
119
119
120
120
}
121
- */
122
121
123
122
@ Test
124
- public void testLeftRedUncleCase () {
123
+ public void testLeftUncleCase () {
125
124
125
+ /* Red left uncle case. */
126
+
126
127
tree .insert (1 );
127
128
tree .insert (2 );
128
129
tree .insert (3 );
@@ -141,7 +142,9 @@ public void testLeftRedUncleCase() {
141
142
assertNull (tree .root .right .left );
142
143
assertNullChildren (tree .root .left , tree .root .right .right );
143
144
assertCorrectParentLinks (tree .root , null );
144
- // System.out.println("====================================");
145
+
146
+ /* Black left uncle case. */
147
+
145
148
tree .insert (5 );
146
149
147
150
assertEquals (2 , tree .root .value .intValue ());
@@ -159,6 +162,49 @@ public void testLeftRedUncleCase() {
159
162
160
163
}
161
164
165
+ @ Test
166
+ public void testRightUncleCase () {
167
+
168
+ /* Red right uncle case. */
169
+
170
+ tree .insert (2 );
171
+ tree .insert (3 );
172
+ tree .insert (4 );
173
+ tree .insert (1 );
174
+
175
+ assertEquals (3 , tree .root .value .intValue ());
176
+ assertEquals (2 , tree .root .left .value .intValue ());
177
+ assertEquals (4 , tree .root .right .value .intValue ());
178
+ assertEquals (1 , tree .root .left .left .value .intValue ());
179
+
180
+ assertEquals (RedBlackTree .BLACK , tree .root .color );
181
+ assertEquals (RedBlackTree .BLACK , tree .root .left .color );
182
+ assertEquals (RedBlackTree .BLACK , tree .root .right .color );
183
+ assertEquals (RedBlackTree .RED , tree .root .left .left .color );
184
+
185
+ assertNull (tree .root .left .right );
186
+ assertNullChildren (tree .root .right , tree .root .left .left );
187
+ assertCorrectParentLinks (tree .root , null );
188
+
189
+ /* Black right uncle case. */
190
+
191
+ tree .insert (0 );
192
+
193
+ assertEquals (3 , tree .root .value .intValue ());
194
+ assertEquals (1 , tree .root .left .value .intValue ());
195
+ assertEquals (4 , tree .root .right .value .intValue ());
196
+ assertEquals (0 , tree .root .left .left .value .intValue ());
197
+ assertEquals (2 , tree .root .left .right .value .intValue ());
198
+
199
+ assertEquals (RedBlackTree .BLACK , tree .root .color );
200
+ assertEquals (RedBlackTree .BLACK , tree .root .left .color );
201
+ assertEquals (RedBlackTree .BLACK , tree .root .right .color );
202
+ assertEquals (RedBlackTree .RED , tree .root .left .left .color );
203
+ assertEquals (RedBlackTree .RED , tree .root .left .right .color );
204
+ assertCorrectParentLinks (tree .root , null );
205
+
206
+ }
207
+
162
208
static void assertNullChildren (RedBlackTree .Node ... nodes ) {
163
209
for (RedBlackTree .Node node : nodes ) {
164
210
assertNull (node .left );
0 commit comments