У меня похожая проблема, как в этом вопросе:
Массив общих узлов Java
Однако статический вложенный класс Node решает одну проблему, но создает другую для меня. Я написал двоичное дерево, и каждый раз, когда указатель узла не должен указывать на что-либо (например, левый и правый указатели конечного узла или родительский указатель корня), он фактически указывает на специальный узел «nil», который не содержит соответствующих данных. Nil является переменной-членом двоичного дерева.
Когда я создаю узел, конструктор заставляет все указатели указывать на ноль. Однако, если я сделаю класс Node статическим, чтобы я мог создать массив узлов (что мне нужно сделать для конкретного метода), я получу ошибку для каждого указателя, которая говорит: «Невозможно сделать статическую ссылку на нестатическое поле ноль «. Но если я изменяю nil на статический, я получаю ошибку, которая говорит: «Невозможно сделать статическую ссылку на нестатический тип T». (Мои узлы содержат объекты параметризованного типа.)
Вот мой класс Node:
protected static class Node<T>{
Node left, right, parent;
T object;
protected Node(T x) {
object= x;
left= nil;
right= nil;
parent= nil;
}
}
Это нулевое обозначение и конструктор двоичного дерева, который создает нулевой узел и делает его корнем:
protected static Node<T> nil;
public BT() {
nil= new Node<T>(null);
root= nil;
}
Как я могу позволить себе создать массив узлов, не сталкиваясь с этими статическими или нестатическими проблемами?