0

左と右のデータを持つノードを使用してバイナリ ツリーを作成する必要があります。私の toString() メソッドでは、文字列ビルダーと preOrderTraverse メソッドを使用しています。

しかし、私の toString() は何も返しません。なぜこれが考えられるのでしょうか?

private void preOrderTraverse(Node node, int depth, StringBuilder sb) {
    for (int i = 1; i < depth; i++) {
        sb.append("  ");
    }
    if (node == null) {
        sb.append("null\n");
    } else {
        sb.append(node.data.toString());
        sb.append("\n");
        preOrderTraverse(node.left, depth + 1, sb);
        preOrderTraverse(node.right, depth + 1, sb);
    }
}

public String toString() {
    StringBuilder sb = new StringBuilder();
    preOrderTraverse(root, 0, sb);
    return sb.toString();

}

public static void main(String[] args) {
    BRT b = new BRT();
    for (int i = 0; i < 15; i++){
        Random generator = new Random();
        Integer randomIndex = generator.nextInt( 11 );
        b.add(randomIndex);
    }

    b.toString();

}

}

4

2 に答える 2

6

出力する必要があります。

System.out.println(b.toString());
于 2013-11-01T14:01:43.043 に答える
0

このように、単にオブジェクトを出力して toString() をオーバーライドしてみてください

System.out.println(b);

また、最初はゼロである Depth の値を渡し、preOrderTraverseクラスの比較i < depthでは、深さの値 ID はゼロであり、i は 1 に初期化されるため、ループは実行されません。

于 2013-11-01T14:10:31.580 に答える