【发布时间】:2017-07-06 08:09:12
【问题描述】:
我有一个 toString 方法,它应该按顺序返回一个表示整个二叉搜索树的字符串。我已经走了这么远,但这只是按顺序打印出数字,而 toString 方法当然只是返回 rootNode 的值。我不知道我应该如何解决这个问题。
@Override
public String toString() {
if (rootNode == null){
return "";
}
else {
return inorder(rootNode.data);
}
}
/**
* @param root
*/
public String inorder(Node<T> root){
if (root != null){
inorder(root.left);
System.out.println(root.value + " ");
inorder(root.right);
}
}
我已经被这个问题困扰了好几个小时了。
【问题讨论】:
-
有什么问题?您的描述与代码匹配。你对
toString()函数有什么期待?如果可能,请为您的程序提供完整的代码和示例输入/输出。 -
不,toString 方法应该将整个 BST 作为一个字符串返回,而不仅仅是打印出来。
-
问题是,在void inorder(Node
)中,他对打印不感兴趣,而是在inorder(Node )方法内部生成一个String序列,所以,在调用String之后s = inorder(Node ), s 将以中序结构打印树,如果他有兴趣从 toString() 方法发回结果,则 inorder(Node ) 需要返回 String -
现在
inorder方法打印每个节点,因为它访问它。如果你想 return 整个树,你必须返回一个字符串值(即不是 void)并将子树添加到当前节点值。
标签: java recursion binary-search-tree tostring inorder