私はタンゴツリーを生成しようとしています。 タンゴのすべてのサブツリーが均衡しているかどうかを確認する必要があります。赤い黒の木のバランシング?
もしバランスが取れていなければ、バランスを取る必要がありますか? RBツリー全体のバランスをとるのに大変な努力をしていますが、適切なロジックが得られないので、誰かが私を助けますか?
ここで私のツリーがどのようにバランスが取れているかチェックするためのコードを追加していますが、それがないときには どうすればバランスをとることができますか?
static boolean verifyProperty5(rbnode n) {
int left = 0, right = 0;
if (n != null) {
bh++;
left = blackHeight(n.left, 0);
right = blackHeight(n.right, 0);
}
if (left == right) {
System.out.println("black height is :: " + bh);
return true;
} else {
System.out.println("in balance");
return false;
}
}
public static int blackHeight(rbnode root, int len) {
bh = 0;
blackHeight(root, path1, len);
return bh;
}
private static void blackHeight(rbnode root, int path1[], int len) {
if (root == null)
return;
if (root.color == "black"){
root.black_count = root.parent.black_count+1;
} else{
root.black_count = root.parent.black_count;
}
if ((root.left == null) && (root.right == null)) {
bh = root.black_count;
}
blackHeight(root.left, path1, len);
blackHeight(root.right, path1, len);
}
小さなもの:root.color == "black"は機能しません。私はあなたのポストをより目に見えるようにするためにJavaタグを追加しました – UmNyobe