2010-12-14 20 views
1

J'ai écrit un tel code ci-dessous;insérer un élément dans un arbre de recherche binaire et trouver son niveau

J'ai une liste de tableau qui a 3 objets. chaque objet a 2 fields 1)digit2)level

Je veux insérer chaque objet dans un arbre de recherche binaire et après avoir inséré chaque élément dans l'arbre, j'ai besoin de trouver son niveau.

code:

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; 
} 

ma liste de tableau est:

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

mais comme je l'ai mentionné dans le code ci-dessus, la ligne: System.out.println(root.getElement().toString()); imprime des objets mal (je veux dire mauvais chiffre ou mauvais niveau !!!!) ->

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

aidez-moi à trouver mon brouillard Ake, grâce

Répondre

1

Ceci est faux:

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

oui vous avez raison, :) !! Merci de votre attention!! – user472221

+0

@ user472221: pas de problème – sje397