【发布时间】:2014-07-27 02:40:33
【问题描述】:
PS:这不是家庭作业。而且我不明白其他问题的答案,否则我不会打开一个新的......
我正在尝试打印这棵树:
3
/ \
7 2
/ \ \
0 9 11
/ \ / \
1 2 6 4
作为级别命令输出:
3
7 2
0 9 11
1 2 6 4
问题是我的代码只能打印这样的树:3 7 2 0 9 11 1 2 64,这与最后一个数字相同,但没有段落或'\ n'。我似乎找不到一种简单的方法来做到这一点(最好不使用 foreach)。有人告诉我我应该在树上创建一个变量:'level',用于分类节点所在的级别,但我怎么才能对级别进行分类呢? 你能帮帮我吗?
public void largura() { //just an auxiliar method to call 'larguras'
larguras(root);
System.out.println();
}
private void larguras(Node t) {
LinkedList<Node> f = new LinkedList<Node>();
Node r;
f.add(t);
while (!f.isEmpty()) {
r=f.remove();
if (r!=root) System.out.print(" ");
System.out.print(r.value);
if (r.left != null) f.add(r.left);
if (r.right != null) f.add(r.right);
}
}
【问题讨论】:
-
让问题更简单(为自己)。如何打印具有一个节点的树?你如何打印一棵有一个根和两个孩子的树?间距是什么样的?
-
我已经知道了。问题不在于那个,而在于试图找出特定节点属于哪个级别!
-
真的不清楚你为什么说这不是this 的重复——据我所知,你问的是完全相同的问题。如果您有不同的、更具体的问题,请提出不同的问题。否则,我建议您研究其他问题的答案,直到您理解为止。
标签: java