【问题标题】:BinarySearch toString二进制搜索到字符串
【发布时间】:2021-11-19 21:05:41
【问题描述】:

我想像在 TreeSet 中一样制作一个 toString。 例如,我的 toString 将打印如下内容:

Student{name='student1', dateOfBirth=2003-04-01, details='none'}, Student{name='student2', dateOfBirth=1999-05-11, details='none'}, 

但我想要这样的东西:

[Student{name='student1', dateOfBirth=2003-04-01, details='none'}, Student{name='student2', dateOfBirth=1999-05-11, details='none'}]

我的代码:

 public String toString() {
        StringBuffer string = new StringBuffer();
        inorderPrint(root, string);
        return string.toString();
    }

    private void inorderPrint(Node root, StringBuffer stringBuffer) {

        if (root != null) {
            inorderPrint(root.left, stringBuffer);
            stringBuffer.append(root.value.toString() +  ", ");
            inorderPrint(root.right, stringBuffer);
        }
    }

【问题讨论】:

  • 我看不出有什么不同。你能具体说明你想在输出中改变什么吗?也请您显示toString 方法。
  • 区别在于开头的'['和结尾的']',最后也没有','。
  • 您可以使用 '[' 初始化 StringBuffer,在 inorderPrint 之后附加结束的 ']' 并添加逗号,但前提是 stringBuffer 有超过 1 个元素(左括号)跨度>
  • 你能把这个写在我的代码里吗,我不太懂你
  • 迂腐传入,我想你想要StringBuilder,因为你不需要它是synchronized

标签: java binary-tree binary-search-tree


【解决方案1】:

要添加额外的字符,如 [ , ],您可以在 inOrder 遍历中使用附加条件。

示例代码:

public String toString()
{
    StringBuffer string = new StringBuffer();
    string.append('[');
    inorderPrint(root, string);
    string.append(']');
    return string.toString();
}

private void inorderPrint(Node root, StringBuffer stringBuffer)
{
    if (root != null)
    {
        inorderPrint(root.left, stringBuffer);
        stringBuffer.append(", ");
        stringBuffer.append(root.value.toString());
        stringBuffer.append(", ");
        inorderPrint(root.right, stringBuffer);
    }
}

【讨论】:

  • 几乎正确。 [] 将为每个递归调用打印。
  • 你是对的。修改了代码。在 inOrder 遍历之前添加了“[”,在 inOrder 遍历之后添加了“]”。
  • 差不多但是谢谢!
猜你喜欢
  • 2023-03-24
  • 1970-01-01
  • 2020-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多