Недавно я изучаю левое сухое красное черное дерево. А я красная этот чтобы помочь мне учиться. Тем не менее, я не могу понять значение кодов в удалять операции, они являются:
if (isRed(h.left))h = rotateRight(h);
Я просто не могу найти хороший пример, чтобы помочь мне получить использование этого кода.
Кто-нибудь может помочь мне объяснить причину, почему код должен быть там (на крошечном примере гораздо лучше)?
Страница 7 из PDF содержит полную функцию. В основном, что он делает, если линия «красная» (то есть она была добавлена, чтобы заставить дерево быть LLRBT), а затем поверните левый дочерний узел на его месте.
A
/ \
B C
Если я удаляю A, я бы повернул B на это место:
B
\
C
Других решений пока нет …