二进制搜索树:以时尚的方式显示树中的树的内容(递归)

时间:2013-12-10 15:40:47

标签: java recursion tree binary-search-tree

我已经有一段时间了,我无法理解。我想要进行逆序遍历(右 - 左 - 左)并将根级别传递给函数ShowTree。 根的水平究竟是什么?是高度吗?如果是,这是它的代码:

public int getHeight()
{
    return getHeight(_root);
}
private int getHeight (BSTnode top)
{
    if (top == null)
        return 0;
    else
    {
        int lftHeight = getHeight(top._left);
        int rhtHeight = getHeight(top._right);
        if (lftHeight > rhtHeight)
            return 1 + lftHeight;
        else 
            return 1 + rhtHeight;
    }
}

所以我将getHeight的值赋给level并将其传递给ShowTree。我想使用每个节点的级别来计算在每个节点的数据前面插入多少空格。

public String ShowTree (int level) 
{
    return ShowTree(_root,level);
}
private String ShowTree(BSTnode myroot, int level)
{
    String result = "";
    if (myroot == null)
        return "";
    else
    {
        result += ShowTree (myroot._right, level + 1);
        result += myroot._data.toStringKey();
        result += ShowTree (myroot._left, level + 1);
        return result;
    }
}

然而,这就像这样覆盖树:

C

B'/ P>

什么时候应该这样打印:

      c

b

                 a

1 个答案:

答案 0 :(得分:1)

使用ShowTree(BSTnode, int)方法...

String result = ""; // no extra whitespace

不,你的意思是......

String result = " "; //extra whitespace