我需要使用具有左,右数据的节点来创建二叉树。 在我的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();
}
}
答案 0 :(得分:7)
你必须输出它。
System.out.println(b.toString());
答案 1 :(得分:0)
尝试通过简单地打印Object来覆盖toString(),像这样
System.out.println(b);
并且你传递的Depth值最初为零,并且在preOrderTraverse
类中比较i < depth
,深度值id为零,i被初始化为1,因此循环将永远不会执行。