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

weixin_38060280 2019-09-12 01:36:19
我需要编写一个使用递归打印二叉树的方法.必须是方法的签名 public static void level(Node n) 所以该方法只能获得Node 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); } } 它的工作很棒! 所以从我的理解,只有在公共方法中没有办法做到这一点?我必须添加另一个私人方法,也得到一个计数… … ???
...全文
140 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38092995 2019-09-12
  • 打赏
  • 举报
回复
几乎你已经做了什么,但有以下修复. 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); } BTW,在谈到层次结构时更有用的名称不是“儿子”而是“孩子”.

430

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧