Самый простой способ подумать об этом - подтолкнуть красные узлы вверх по дереву, а затем снова повернуть корень черного цвета.
Представьте себе дерево, похожее на следующее:
B
R B
B B R B
B B B B B B R R
Если естьэто красный узел на каждом пути, тогда будет хотя бы один черный узел с двумя красными дочерними элементами.Если вы подтолкнете красный узел вверх по дереву в каждой позиции, где это происходит, начиная с нижней части, в конечном итоге вы подтолкнете красный узел к корню дерева, и в этот момент вы сможете перевернуть цвет, и высота дерева вырастет на единицу.
Кроме того, если вы когда-либо достигнете конфигурации, где весь уровень будет красным, все узлы на этом уровне можно будет перевернуть, не изменяя свойств дерева, и снова высота увеличится на единицу.
Это несколькоХитрее, если в некоторых путях имеется более одного красного узла, в этом случае вам нужно работать с самого верхнего красного узла в этом пути и выдвинуть красный узел из другой ветви, чтобы сопоставить его.