BST toString在线性时间内

时间:2011-04-29 20:59:40

标签: java

如何为使用StringBuilder的BST编写线性时间toString()方法? 我只是想知道如何开始至少

2 个答案:

答案 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来获取其中的所有内容。

现在,我在这里做得不多,如果有一个特殊情况缺失或者其他什么我不会感到惊讶,但这种基本方法应该足够了。