Еще один способ взглянуть на это состоит в том, что высота h
любого узла определяется как:
h = 1 + max( left.height, right.height )
и узел неуравновешен всякий раз, когда:
abs( left.height - right.height ) > 1
Глядя на дерево выше:
- Node 12 is a leaf node so its height = 1+max(0,0) = 1
- Node 14 has one child (12, on the left), so its height is = 1+max(1,0) = 2
- Node 9 has one child (14, on the right), so its height is = 1+max(0,2) = 3
Чтобы определить, является ли узел 9 сбалансированным или нет, мы смотрим на высоту его дочерних элементов:
- 9's left child is NULL, so 9.left.height = 0
- 9's right child (14) has height 2, so 9.right.height = 2
Теперь решите, чтобы показать, что узел 9 не сбалансирован:
9.unbalanced = abs( 9.left.height - 9.right.height ) > 1
9.unbalanced = abs( 0 - 2 ) > 1
9.unbalanced = abs( -2 ) > 1
9.unbalanced = 2 > 1
9.unbalanced = true
Аналогичные вычисления могут быть сделаны для каждого другого узла.