我需要为大学实施 B 树:
我有一个“外部”类 B-Tree,其属性为root和 _degree。表示节点的类被实现为静态成员类:
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 类实现为静态成员类时,我无法访问外部类的 degree 属性。
现在我必须选择:
- 使 Node 类成为内部类(非静态成员类)或
- 为 Node 类创建一个构造函数,并在每次我需要构造 Node 时传入度数。
什么是最好的选择?将其设为内部类意味着节点都将引用 Btree(外部类),但将其设为静态成员类意味着我每次都必须通过学位。