2

ですから、使命があります。NODEというクラスがあり、インスタンスは「ノード」です。このノードには多くの子があり、これらの子にも多くの子があります。など。このツリーの最高レベルをどのように数えることができますか?等:

  • ノード->子1->子1.1->子1.1.1、子1.1.2->子1.1.2.1
  • ノード->子2
  • ノード->child3->child3.1、child3.2-> child3.2.1

このツリーの最高レベルは4です(child1.1.2.1のレベル、ノードのレベルは0です)助けてください!再帰的な方法を使用する必要があることはわかっていますが、誰かがこの問題を解決してコードを記述できるかどうかはわかりません...お願いします...ありがとうございます!メソッドは次のように開始する必要があります。

public int maxLevel(NODE node){...
4

2 に答える 2

3

このメソッドは、基本ケース(0の子を持つ)に対してレベル1を返します。

public int maxLevel() {
    int maxChildLevel = 0;
    for (Node child : children) {
        maxChildLevel = Math.max(maxChildLevel, child.maxLevel());
    }
    return maxChildLevel + 1;
}

maxLevelこの例は、のインスタンスメソッドとして宣言することを目的としているため、引数としてNodeをとる必要はありません。Node

于 2012-10-07T21:57:20.103 に答える
1

あなたはこのようなことを試すことができます:

public static int maxLevel(Node node) {
    if (node.children.length == 0) return 1;

    int max = maxLevel(node.children[0]);
    for (int i = 1 ; i < node.children.length ; i++) {
        int n = maxLevel(node.children[i]);
        if (n > max) max = n;
    }

    return max + 1;
}

ここnode.childrenで、はの子ノードで構成される配列ですnode

于 2012-10-07T22:02:02.053 に答える