вставка элемента в двоичное дерево поиска и определение его уровня - PullRequest
1 голос
/ 14 декабря 2010

Я написал такой код ниже, что

У меня есть список массивов, в котором есть 3 объектов.каждый объект имеет 2 fields 1)digit2)level

Я хочу вставить каждый объект в двоичное дерево поиска, и после вставки каждого элемента в дерево мне нужно найти его уровень.

Код:

private void greedyMethod(ArrayList<Element> array) {
    //it will print the objects in the array list.
    System.out.println(array.toString());

    array.get(0).setLevel(1);
    root = new DNode(array.get(0), null, null);
    for (int i = 1; i < array.size(); i++) {
        insert(array.get(i));
    }
}

private void insert(Element e) {
    root = makeBST(root, e);
}

private DNode makeBST(DNode root, Element e) {
    if (root == null) {
        root = new DNode(e, null, null);
        // This will print wrong objects.
        System.out.println(root.getElement().toString());
    } else if (e.getDigit() < root.getElement().getDigit()) {
        e.setDigit(root.getElement().getLevel() + 1);
        root.prev = makeBST(root.prev, e);
    } else if (e.getDigit() > root.getElement().getDigit()) {
        e.setLevel(root.getElement().getLevel() + 1);
        root.next = makeBST(root.next, e);
    }

    System.out.println(averageAccessTime);
    return root;
}

мой список массивов:

[digit :25   level:0, digit :27   level:0, digit :26   level:0]

, но, как я упоминал в коде выше, строка: System.out.println(root.getElement().toString()); печатает неправильные объекты (я имею в виду неправильную цифру или неправильный уровень !!!!) ->

digit :27  probability: 0.2 level:2
digit :3  probability: 0.1 level:2

пожалуйста, помогите мне найти мою ошибку, спасибо

1 Ответ

1 голос
/ 14 декабря 2010

Это неправильно:

e.setDigit(root.getElement().getLevel() + 1);
...