【发布时间】:2015-10-27 01:11:31
【问题描述】:
我在使用 Java 创建的基本二叉搜索树时遇到问题。我正在尝试在控制台中输出树结构,并在节点值之前添加空格,以了解节点的深度。
由于某种原因,我的 printTree() 函数正在输出一个看起来稍微向后的树结构。我不认为(5 0.0) 会缩进,因为它会作为根保留在这样的基本树中。
下面是我的函数和输出:
注意:c 创建根,s 添加键和值,xp 输出树。
private int k;
private float d;
private Node left, right;
public Node(int k) {
this.k = k;
}
public Node(int k, float d) {
this.k = k;
this.d = d;
}
private int height(Node n) {
if (n == null)
return -1;
return 1 + Math.max(height(n.left), height(n.right));
}
private void printTree(Node n) {
if (n == null)
return;
System.out.println(new String(new char[3 * height(n)]).replace("\0", " ") + "(" + n.k + " " + n.d + ") ");
printTree(n.left);
printTree(n.right);
}
输出:
我很确定根据我的输入,5 根本不应该缩进,因为它将是根节点。
我认为它应该看起来像(基于二叉搜索树):
(5 0.0)
(4 1.2)
(2 3.5)
(6 7.5)
(87 96.5)
(当然还有正确数量的前置空格)
谁能解释我做错了什么?
【问题讨论】:
标签: java tree key binary-search-tree