大学のBツリーを実装する必要があります。
root属性と_degree属性を持つ「外部」クラスのBツリーがあります。ノードを表すクラスは、静的メンバークラスとして実装されます。
public class BTree<E> {
private Node<E> root;
// the minimal degree
private int degree;
public BTree(int degree) {
if (degree < 2) {
throw new IllegalArgumentException();
}
this.degree = degree;
}
// other stuff
private static class Node<T> {
T[] elements = (T[])new Object[degree * 2 - 1];
Node<T>[] children = (Node<T>[])new Object[degree * 2];
int size = 0;
}
}
したがって、今の私の問題は次のとおりです。静的メンバークラスとしてNodeクラスを実装したため、外部クラスの度属性にアクセスできません。
今、私は選択する必要があります:
- Nodeクラスを内部クラス(非静的メンバークラス)にするOR
- Nodeクラスのコンストラクターを作成し、Nodeを構築する必要があるたびに学位を渡します。
最良の選択は何でしょうか?これを内部クラスにすると、ノードはすべてBtree(外部クラス)への参照を持つことになりますが、静的メンバークラスにすると、毎回学位を渡す必要があります。