这是我的toString()但它无法正常工作
public String toString() {
StringBuilder str = new StringBuilder("{");
traverse(root, str);
str.append("}");
return str.toString();
}
private void traverse(TreeNode node, StringBuilder str){
if (node == null){
return;
}
if (node.left != null) {
traverse(node.left, str);
str.append(", ");
}
str.append(node.left);
if (node.right != null) {
str.append(", ");
traverse(node.right, str);
}
}
这是打印出来的方法: {null,AbstractTreeMap $ TreeNode @ 15a8767}
任何帮助表示赞赏。谢谢
答案 0 :(得分:2)
if (node.left != null) {
inOrder(node.left, result);
result.append(", ");
}
result.append(node.left); //should not be node.left
改为执行此操作
if (node.left != null) {
inOrder(node.left, result);
result.append(", ");
}
result.append(node); //this will print the node itself
同样TreeNode
没有覆盖toString()
方法,因此它会显示哈希码。
答案 1 :(得分:0)
递归方法应该调用result.append(node)而不是result.append(node.left)
你的TreeNode类应该覆盖toString(显示一些节点id),否则你将看到默认的toString(来自Object),它看起来像“AbstractTreeMap $ TreeNode @ 15a8767”