java - 二叉搜索树 : Display contents of the tree in a tree like fashion (recursive)

标签 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

一个

什么时候应该像这样打印:

      c

b

                 a

最佳答案

在您的 ShowTree(BSTnode, int) 方法中...

String result = ""; // no extra whitespace

你不是说……

String result = " "; //extra whitespace

关于java - 二叉搜索树 : Display contents of the tree in a tree like fashion (recursive),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20498712/

相关文章:

C++ 递归排序算法不需要数组长度

algorithm - 范围内的乘法

c - 打印抽象语法树

java - 线程挂起导致其他线程挂起

java - 如何在Windows XP中更改JDK安装目录?

java - Sonar : method length, 条件运算符

无论数组大小如何,Java 多数组递归

recursion - 如何使用 Read::take 递归地读取具有通用 Read 特征的树结构?

javascript - 比较javascript中的树数据

java - 为什么在本地网络中使用XAMPP无法连接MySQL和Java