※これで正しいか知らん
●説明のための定義
根(あるいは節)を A
根(A)の左枝の節(あるいは葉)を B
根(A)の右枝の節を C
根(A)の左枝(B)の左枝の節(あるいは葉)を D
根(A)の左枝(B)の右枝の節を E
根(A)の右枝(C)の左枝の節を F
根(A)の右枝(C)の右枝の節を G
以下同様にH~Oまで名前付け
A
B C
D E F G
H I J K L M N O
★根(A)から見て右枝が深くなりすぎた場合
右枝(C)の左枝(F)が右枝(C)の右枝(G)より長い場合(画像の上二つのパターン)
[1]枝(F)を根の位置に持ってくる
[2]枝(C)の左枝には枝(F)の右枝の先を付ける
[3]根(A)の右枝には枝(F)の左枝の先を付ける
[4]枝(F)の左枝には根(A)を付ける
[5]枝(F)の右枝には枝(C)を付ける
擬似コード
001 root = F
002 C.left = F.right
003 A.right = F.left
004 F.left = A
005 F.right = C
右枝(C)の右枝(G)が右枝(C)の左枝(F)より長い場合(画像の下二つのパターン)
[1]枝(C)を根の位置に持ってくる
[2]根(A)の右枝には枝(C)の左枝の先を付ける
[3]枝(C)の左枝には根(A)を付ける
擬似コード
001 root = C
002 A.right = C.left
003 C.left = A