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

+0

@ user472221:問題ありません – sje397

関連する問題