2010-12-14 71 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 

请帮我找到我的薄雾AKE,感谢

回答

1

这是错误的:

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

是的,你是对的,:)!感谢您的关注!! – user472221 2010-12-14 06:44:50

+0

@ user472221:没问题 – sje397 2010-12-14 09:50:42