gpt4 book ai didi

java - 二叉搜索树遍历方法,依次为toString

转载 作者:行者123 更新时间:2023-11-30 02:18:05 24 4
gpt4 key购买 nike

我用自己的节点从头开始创建了一个二叉搜索树,当我添加节点以及将树打印到控制台时,它的功能完美。但是,我花了半时间才使 toString 方法正常工作。

我将 toString 方法更改为 MakeString,因为我认为在将可比类型数据转换为字符串时它会变得困惑。我可以获取返回一个节点或仅以对象形式返回的方法,但不能以字符串形式返回整个树。 printInOrder() 方法工作得很好,那为什么我的 MakeString() 方法就不行呢?

public void printInOrder(){

if (left != null) left.printInOrder();

System.out.println(data);

if (right != null) right.printInOrder();
}

public String MakeString(){

String OrderedTree;
StringBuilder sb = new StringBuilder();
if (data == null) return "Tree is empty";

if (left != null) left.MakeString();

sb.append(data);

if (right != null) right.MakeString();

最佳答案

如果您需要在整个递归过程中保留某些内容,那么应该将其作为参数传递。如果您想避免必须准备初始调用或在递归之前或之后需要做一些事情,这通常会导致出现一对方法。

在您的情况下,您使用的是 StringBuilder ,它需要在递归之前创建,在整个过程中保留,然后在之后使用。

例如:

public String MakeString() {
if (data == null)
return "Tree is empty";

StringBuilder sb = new StringBuilder();

MakeString(sb);

return sb.toString();
}

private void MakeString(StringBuilder sb) {
if (left != null)
left.MakeString(sb);

sb.append(data);

if (right != null)
right.MakeString(sb);
}

关于java - 二叉搜索树遍历方法,依次为toString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47686199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com