作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我用自己的节点从头开始创建了一个二叉搜索树,当我添加节点以及将树打印到控制台时,它的功能完美。但是,我花了半时间才使 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/
我不知道如何描述这一点。我在一个页面上有几个 div,类似于: some lorem ipsum text here Macbeth s
我是一名优秀的程序员,十分优秀!