2
我在使用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)
(当然是有前缀空间的正确量)
任何人都可以解释我是什么做错了?
你可以用'maxHeight'来定义你的意思吗? – Nic
您需要找到所有节点的最大高度。在上面的'height(...)'函数的当前实现中,这将是'height(rootNode)'。 – realitybreeder