MCPcopy Create free account
hub / github.com/TheAlgorithms/Go / deleteFix

Method deleteFix

structure/tree/rbtree.go:352–411  ·  view source on GitHub ↗
(x *RBNode[T])

Source from the content-addressed store, hash-verified

350}
351
352func (t *RB[T]) deleteFix(x *RBNode[T]) {
353 var s *RBNode[T]
354 for x != t.Root && x.color == Black {
355 if x == x.parent.left {
356 s = x.parent.right
357 if s.color == Red {
358 s.color = Black
359 x.parent.color = Red
360 t.leftRotate(x.parent)
361 s = x.parent.right
362 }
363
364 if s.left.color == Black && s.right.color == Black {
365 s.color = Red
366 x = x.parent
367 } else {
368 if s.right.color == Black {
369 s.left.color = Black
370 s.color = Red
371 t.rightRotate(s)
372 s = x.parent.right
373 }
374
375 s.color = x.parent.color
376 x.parent.color = Black
377 s.right.color = Black
378 t.leftRotate(x.parent)
379 x = t.Root
380 }
381 } else {
382 s = x.parent.left
383 if s.color == Red {
384 s.color = Black
385 x.parent.color = Red
386 t.rightRotate(x.parent)
387 s = x.parent.left
388 }
389
390 if s.right.color == Black && s.left.color == Black {
391 s.color = Red
392 x = x.parent
393 } else {
394 if s.left.color == Black {
395 s.right.color = Black
396 s.color = Red
397 t.leftRotate(s)
398 s = x.parent.left
399 }
400
401 s.color = x.parent.color
402 x.parent.color = Black
403 s.left.color = Black
404 t.rightRotate(x.parent)
405 x = t.Root
406 }
407 }
408 }
409

Callers 1

deleteHelperMethod · 0.95

Calls 2

leftRotateMethod · 0.95
rightRotateMethod · 0.95

Tested by

no test coverage detected