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

而且您传递的深度值最初为零,并且在preOrderTraverse类比较i < depth中,深度值 id 为零并且 i 被初始化为 1,因此循环将永远不会执行。

于 2013-11-01T14:10:31.580 回答