2012-03-21 15 views
-2

私はタンゴツリーを生成しようとしています。 タンゴのすべてのサブツリーが均衡しているかどうかを確認する必要があります。赤い黒の木のバランシング?

もしバランスが取れていなければ、バランスを取る必要がありますか? 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); 
    } 
+0

小さなもの:root.color == "black"は機能しません。私はあなたのポストをより目に見えるようにするためにJavaタグを追加しました – UmNyobe

答えて

1

ツリーを生成し、バランスがとれていないかどうかを確認しないでください。最初から赤黒の構造を使用してみてください。結果として得られるツリーが均衡していることが保証されます。それとも私は誤解しましたか?

編集:

タンゴツリーが赤黒木に基づいているようです。つまり、その上にTangoツリーを実装する前に、既に赤黒のツリーを実装する必要があります。

+0

私はRBツリーを持っていましたが、いくつかの段階では2つの部分で分割されますので、時分割ツリーはバランスが取れません。バランス –

0

赤黒のツリーバランスを探している場合は、コードhereをチェックすることができます。

関連する問題