Итак, я понимаю, что вы здесь работаете в Java, но вот несколько псевдокодов, которые могут помочь:
unsigned int blackHeight()
height, heightLeft, heightRight = 0
if black
height++
if left
heightLeft = left->blackHeight()
else
heightLeft = 1
if right
heightRight = right->blackHeight()
else
heightRight = 1
if heightLeft != heightRight
//YOU HAVE A PROBLEM!
height += heightLeft
return height
Я только начинаю экспериментировать с красными черными деревьями, но я считаю, что этот алгоритм должен дать вам высоту черного на любом узле, с которого вы его вызываете.
Редактировать: Я думаю, что я должен соответствовать, это будет код, найденный в узле, а не в дереве. В c ++ он вызывается с помощью someNode-> blackHeight ().