Выполнение rotateL
с последующим rotateR
в конечном итоге ничего не делает, так как вы модифицируете тот же самый узел.n
не оригинал n
.Это newNode
от функции.В общем, n
выглядит примерно так:
newNode = rotateL(n);
n = rotateR(newNode);
Таким образом, вы в основном оставляете дерево без изменений.
Я также не уверен, почему вы повторяете проверку if (height(n.RCN) > height(n.LCN))
.Я думаю, вы имели в виду, что ваша первая проверка больше похожа на abs(height(n.RCN) - height(n.LCN)) > 1
, а затем используйте сравнение, чтобы определить, какой способ поворота.
Кроме того, не могли бы вы добавить реализацию для height(...)
?