красное черное дерево балансирует? - PullRequest
0 голосов
/ 21 марта 2012

я работаю над созданием дерева танго, где мне нужно проверить, сбалансировано ли каждое поддерево в танго.

если он не сбалансирован, мне нужно сбалансировать его? Я изо всех сил стараюсь сделать баланс всего 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);
    }   

Ответы [ 2 ]

1 голос
/ 21 марта 2012

Не пытайтесь сгенерировать дерево и проверить, сбалансировано ли оно.Попробуйте использовать красно-черную структуру с самого начала.Это гарантирует, что полученное дерево будет сбалансированным.Или я неправильно понял?

Редактировать:

Кажется, дерево танго основано на красных черных деревьях.Это означает, что вам нужно внедрить красно-черное дерево, прежде чем реализовывать дерево танго поверх этого.

0 голосов
/ 06 июня 2012

Если вы ищете балансирование красно-черного дерева, вы можете проверить код здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...