[英]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.