Сколько ваших узлов будет "листовыми" узлами? Возможно, создать структуру данных для хранения дочерних элементов можно только тогда, когда у вас есть дочерний элемент, в противном случае сохраняется нулевая ссылка.
Если вы не нуждаетесь в для поиска детей как карты, я бы использовал List<T>
(инициализированный с соответствующей емкостью) вместо Dictionary<,>
для детей. Похоже, что у вас может быть больше требований, чем вы объяснили, но это трудно сказать.
Я удивлен, что вы потерпели неудачу после нескольких тысяч узлов - у вас должна быть возможность создать довольно большое количество объектов, прежде чем возникнут проблемы.
Я бы также предположил, что если вы думаете, что в конечном итоге будете использовать много памяти, убедитесь, что вы работаете на 64-битной машине, и убедитесь, что само ваше приложение установлено на 64-битную. (Это может быть просто тонкая оболочка над библиотекой классов, что хорошо, если для библиотеки классов установлен 64-разрядный или AnyCPU.)