【问题标题】:Binary Tree - Method to recursively count the number of nodes on a level without a count parameter (Java)二叉树 - 在没有计数参数的情况下递归计算级别上的节点数的方法(Java)
【发布时间】:2014-12-24 14:23:59
【问题描述】:

我正在寻找一些我用 Java 编写的用于二叉树类的代码,并从参数中删除 count 参数,但保持整个事情是递归的。

所以,给定一个具有这些变量的类:

 public class BinaryTree<E> {

  protected E data;
  protected BinaryTree<E> left,right;

我怎么能这样做:

public int levelCount(int count, int level){
 if (data == null) {return 0;}
 if (count == level) {return 1;}
 else {
  return this.getRight().levelCount(count+1,level) + this.getLeft().levelCount(count+1,level);
  } 
}

这应该(并且确实)返回二叉树任何给定级别的节点数。

所以有一棵树“thatTree”看起来像:

     2
   /    \
  6      3
 / \    / \
4   5  7   10 

thatTree.levelCount(0) 返回 1,thatTree.levelCount(1) 返回 2,thatTree.levelCount(2) 返回 4

【问题讨论】:

  • 任何特定的语言?
  • 请注意,这不是提供“一般评论”的网站。
  • 请举例说明如何调用它以及它会返回什么;不清楚您要在这里计算什么。
  • @ScottHunter 这个问题基本上与语言无关,他显然试图计算树中特定深度处存在多少节点。实际上,他已经这样做了,但正在询问是否可以在没有 count 参数的情况下完成。
  • @ooga:如果您希望有人编写代码,那么您至少可以指定语言。如果你解释你想要做什么,谁知道呢,你可能会解决你自己的问题。

标签: java recursion binary-tree


【解决方案1】:

为什么不传递一个参数,每次递归减1,为0时结束?比如:

public int levelCount(int level){
  if (data == null || level < 1) {return 0;}
  if (level == 1) {return 1;}
  else {
    return this.getRight().levelCount(level-1) + this.getLeft().levelCount(level-1);
  } 
}

【讨论】:

    猜你喜欢
    • 2018-10-30
    • 2012-10-04
    • 2020-08-07
    • 2020-02-21
    • 2015-08-31
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    相关资源
    最近更新 更多