如何为使用StringBuilder的BST编写线性时间toString()方法? 我只是想知道如何开始至少
答案 0 :(得分:2)
由于这听起来像家庭作业,我只会给出一个提示:使用递归,inorder树遍历和单个StringBuilder实例。
答案 1 :(得分:0)
最好的办法是传递StringBuilder,并将其作为返回值。
想到的基本原则是
// primary method
String toString(BSTNode node) {
return toString0(node, new StringBuilder()).toString();
}
/**
* assume BSTNode has toString implemented already.
*/
private StringBuilder toString(BSTNode node, StringBuilder result) {
if(node == null) return result;
result.append(node);
toString(node.left,result);
toString(node.right,result);
return result;
}
然后你可以简单地在树的根上调用toString来获取其中的所有内容。
现在,我在这里做得不多,如果有一个特殊情况缺失或者其他什么我不会感到惊讶,但这种基本方法应该足够了。