Они не уникальны.
Простым доказательством было бы внесение тривиального алгоритмического изменения, такого как проверка того, что мы можем изменить цвет корня, и предоставление случая, когда он все еще действителен, например:
1-B
/ \
0-R 2-R
add(3):
1-B
/ \
0-B 2-B
\
3-R
Но новый алгоритм может так же легко привести к
1-R
/ \
0-B 2-B
\
3-R
Корень другого цвета, но, конечно, деревьяоба остаются действительными деревьями RB.
Это может показаться немного тривиальным, но вы можете расширить идею (если вам нужно менее тривиальное доказательство), чтобы проверить не только корень.Вы можете проверить уровни O (1) глубоко, чтобы сделать нетривиальное, но действительное изменение, которое приведет к созданию двух разных алгоритмов с одинаковым временем выполнения.
Например, проверьте, что первые 10 строк заполнены и черныеи изменение нечетных на красный, даст дополнительную постоянную работу (то есть O (1)) и новый алгоритм.
Я должен отметить, что это просто доказательство неединственности, а несвязано с количеством неединственности.Т.е. чего-то тривиального, подобного этому, достаточно, чтобы доказать это, но это оставляет дверь открытой для алгоритмов RB, которые отличаются более фундаментальными способами.