2010-12-14 3 views
1

Я написал такой код ниже;Вставка элемента в двоичное дерево поиска и поиск его уровня

У меня есть список массивов, который имеет 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

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

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

да вы правы, :) !! Спасибо за внимание!! – user472221

+0

@ user472221: без проблем – sje397

Смежные вопросы