Java 计算非二叉树的元素个数

Java 计算非二叉树的元素个数,java,tree,Java,Tree,我制作了一个函数来计算非二叉树的元素(节点)数,但它总是返回正确答案-1(例如,如果元素数为10,则返回9),就像我没有计算根一样。我花了几个小时试图修复它,但它没有工作 下面是我构建树的代码部分: NaryTreeNode iRoot=新的NaryTreeNode(25); 奈米绿光管i1=新奈米绿光管(11); 奈米绿极i2=新奈米绿极(-23); 鼻甲叶状体i3=新鼻甲叶状体(67); 奈米绿极i4=新奈米绿极(-7); 鼻甲叶状体i5=新鼻甲叶状体(88); 鼻甲叶状体i6=新鼻甲叶状体

我制作了一个函数来计算非二叉树的元素(节点)数,但它总是返回正确答案-1(例如,如果元素数为10,则返回9),就像我没有计算根一样。我花了几个小时试图修复它,但它没有工作

下面是我构建树的代码部分:

NaryTreeNode iRoot=新的NaryTreeNode(25);
奈米绿光管i1=新奈米绿光管(11);
奈米绿极i2=新奈米绿极(-23);
鼻甲叶状体i3=新鼻甲叶状体(67);
奈米绿极i4=新奈米绿极(-7);
鼻甲叶状体i5=新鼻甲叶状体(88);
鼻甲叶状体i6=新鼻甲叶状体(47);
鼻甲叶状体i7=新鼻甲叶状体(91);
奈米绿极i8=新奈米绿极(-34);
鼻甲叶状体i9=新鼻甲叶状体(15);
iRoot.addChild(i1);
iRoot.addChild(i2);
iRoot.addChild(i3);
i1.addChild(i4);
i1.addChild(i5);
i2.addChild(i6);
i4.addChild(i7);
i4.addChild(i8);
i4.addChild(i9);
LinkedNaryTree iTree=新的LinkedNaryTree(iRoot);
System.out.println(iTree.size(iTree.getRoot());
以下是我的方法代码:

public int size(NaryTreeNode节点){
if(node==null)
返回0;
int计数器=0;
对于(int i=0;i
减少1的原因是您考虑了函数调用之外的节点(
1+size()
),但是对
size
的调用应该在其计数中包含作为参数传递的节点

因此,有两个地方需要修复:

  • int计数器=0应该是
    int计数器=1所以要解释
    节点
    ,我们在那个点上已经知道它不是空的

  • counter+=1+大小(node.getChild(i))计数1太多。在这里,我认为您打算使用
    1+
    来解释子项,但是
    size()
    应该在返回的计数中包含子项本身(通过上面的修复完成)。所以这应该是:

    counter += size(node.getChild(i));