【发布时间】:2016-06-05 00:21:57
【问题描述】:
请帮我修复我的代码。
对于toString 方法,字符串格式应为
{currentData, leftSubtree, rightSubtree}
一棵空树应该返回一组空括号{}。
对于我得到的 Junit 测试:
Expected: {5, {0, {-5, {}, {}}, {3, {}, {}}}, {10, {7, {}, {}}, {13, {}, {}}}}
Actual: {5, {0, {-5, {}, {3, {}, {}, {10, {7, {}, {13, {}, {}, {}}
这是我的代码:
public String toString() {
StringBuffer string = new StringBuffer("{");
toString(root, string);
string.append("}");
return string.toString();
}
private void toString(BSTNode<T> node, StringBuffer string) {
if (node != null) {
string.append(node.getData());
if (node.getLeft() != null) {
string.append(", " + "{");
toString(node.getLeft(), string);
}
if (node.getRight() != null) {
string.append(", " + "{");
toString(node.getRight(), string);
}
}
string.append(", {}");
}
谢谢!!
【问题讨论】:
-
您是否在 IDE 调试器中跟踪过代码?你看到了什么?
-
递归后你永远不会写出结束括号
-
使用
StringBuilder,而不是StringBuffer。 -
每个节点都会无条件追加
", {}",不管是否为空? 真的吗?