In order traversal を使用して二分探索木を実装しようとしています。テストするために、一連の数字を次々に出力しようとしています。うまくソートされているように見えますが、重複した数字が出力されることがあります。私のコードの関連部分を見てください:
ツリー クラスとメソッド:
public class Tree {
Node root;
public Tree(){
root = null;
}
public Node add(Node n, int value){
if(n== null){
n= new Node(value);
}else if(value < n.getValue()){
n.addLeftNode(add(n.getLeft(),value));
}else if(value > n.getValue()){
n.addRightNode(add(n.getRight(),value));
}
return n;
}
public static Node traverse(Node n){
Node result = new Node();
if(n != null){
if(n.getLeft() != null){
result = traverse(n.getLeft());
System.out.println(result.getValue());
}
result = n;
System.out.println(result.getValue());
if(n.getRight() != null){
result = traverse(n.getRight());
System.out.println(result.getValue());
}
}
return result;
}
}
これはそれが印刷しているものです:
0 0 1 1 3 4 4 5 6 7 7 8 10 11 12 12 12 15 15 15 15 15 15 15 16 18 18 20 21 22 22 22 22 23 27 28 28 28 29 34 35 43 43 43 43 43 43 43 43 45 55 56 59 66 75 75 75 75 75 75 76 76 76 78 88 89 89 90 90 90 98 98
手がかりはありますか?私はそれがトラバーサルの何かだと推測しています。デバッグを試みましたが、まだ問題を見つけることができませんでした。ご覧のとおり、少なくとも番号はソートされています。