簡體   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