gpt4 book ai didi

java - 编写一个打印二叉树和每个节点级别数的方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:54:33 26 4
gpt4 key购买 nike

我需要编写一个使用递归打印二叉树的方法。一定是方法的签名会是

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);
}

}

而且效果很好!

所以据我所知,没有办法只在公共(public)方法中做到这一点?我必须添加另一种私有(private)方法,该方法也可以获得一个计数...???

最佳答案

几乎与您已经完成的一样,但进行了以下修复。

public static void level(Node n) {
level(n, 0);
}

private static void level(Node n, int level) {
///..............your logic
level(n.getLeftSon(), level + 1);
//...............
level(n.getRightSon(), level + 1);
}

顺便说一句,在谈到层次结构时更有用的名字不是“儿子”而是“ child ”。

关于java - 编写一个打印二叉树和每个节点级别数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9149773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com