繁体   English   中英

非二叉树中特定级别的子节点数

[英]Number of child nodes in a specific level in a non-binary tree

我正在尝试创建一个方法

 public int getNumberOfChildNodes(int level)

这将返回特定级别的多个子节点。 下图说明: Level 1应返回2(B和C),Level 2应返回5(D、E、F、G、H)

我已经创建了一个代码,它返回树的高度并返回所有子节点的数量,但是我不知道如何仅在特定级别找出 childNode 的数量。 谢谢!

import java.util.*;

public class Tree {

private String name;
private List<Tree> childNodes = new ArrayList<Tree>();

public Tree(String name) {
    this.name = name;
}

public void addChildNode(Tree childNode) {
    childNodes.add(childNode);
}


public int getNumberOfChildNodes() {
    int result = 0;
    for (Tree childNode : childNodes){
        result += childNode.getNumberOfChildNodes();
   }
    return result + childNodes.size();
}

/*

public int getNumberOfChildNodes(int level) {
    int result = 0;        
    for (Tree childNode : childNodes) {
        result += childNode.getNumberOfChildNodes();
 }
    return result + childNodes.size();    }
*/

}

试试这个递归函数:

public int getNumberOfChildNodes(int level) {
    if(level == 0)
        return childNodes.size();

    int numOfChildren = 0;
    for (Tree childNode : childNodes) {
        numOfChildren += childNode.getNumberOfChildNodes(level-1);
    }

    return numOfChildren ;
}

这个想法是扫描每个级别。 对于每个递归调用,我们将级别降低 1。因此,当level==0这意味着我们处于我们想要的级别的节点中,我们将返回该节点的size()

编辑

在这个解决方案中,我假设每个节点的级别是与根的距离(即根在级别 0 并且它的孩子在级别 1 等等)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM