【发布时间】:2012-02-05 13:53:37
【问题描述】:
我需要编写一个使用递归打印二叉树的方法。必须是该方法的签名将是
public static void level(Node n)
因此该方法只能获取节点 n 并且不应返回任何内容,只需在屏幕上打印即可。
我的问题是:我需要树上的每个级别都打印有他自己的级别编号, 而且我不知道该怎么做
这是我尝试过的:
public static void level(Node n)
{
if (n.getLeftSon() == null && n.getRightSon() == null)
System.out.println(n.getNumber());
else
{
System.out.println(n.getNumber());
if (n.getLeftSon() != null)
level(n.getLeftSon());
if (n.getRightSon() != null)
level(n.getRightSon());
}
}
它可以打印树,但没有每个节点的层数。
好的,所以在论坛的帮助之后,我这样写了这个方法:
public static void level(Node n)
{
levelAndNumbers(n,0);
}
private static void levelAndNumbers(Node n, int i)
{
if (n.getLeftSon() == null && n.getRightSon() == null)
System.out.println(n.getNumber()+"=>"+i);
else
{
System.out.println(n.getNumber()+"=>"+i);
if (n.getLeftSon() != null)
levelAndNumbers(n.getLeftSon(), i+1);
if (n.getRightSon() != null)
levelAndNumbers(n.getRightSon(), i+1);
}
}
而且效果很好!
所以据我了解,仅在公共方法中没有办法做到这一点?我必须添加另一个获取计数的私有方法...???
【问题讨论】: