0

这是我的 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}

任何帮助表示赞赏。谢谢你

4

2 回答 2

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()覆盖方法,因此它显示哈希码。

于 2013-03-01T04:51:10.037 回答
0
  1. 递归方法应该调用 result.append(node) 而不是 result.append(node.left)

  2. 你的 TreeNode 类应该覆盖 toString(显示一些节点 ID),否则你会看到默认的 toString(来自 Object),它看起来像“AbstractTreeMap$TreeNode@15a8767”

于 2013-03-01T04:50:48.060 回答