Буду честным; Мне очень трудно понять, как Itay's suggestion не имеет никакого смысла.
Вот это требование, что вы заявили:
Я хочу написать метод, который будет возвращать конкретный узел, заданный указанным Code
.
Значит, Code
уникален, я понимаю? Тогда нет ничего, что помешает вам помещать все ваши объекты Node
в Dictionary<string, Node>
.
В своих комментариях к ответу Итайте ты сказать:
Я понимаю, что словарь представляет собой плоский индекс, я просто не понимаю, но как этот показатель будет лезет в иерархическую структуру данных и получить правильный узел.
Если вы имеете в виду вы не понимаете, как словарь будет знать, где ваш Node
в структуре данных , это потому, что это не так. Это имеет значение? Вы не указали в своих требованиях, что хотите знать, где находится узел в структуре данных; вы указали только, что хотите получить узел. Чтобы сделать это, словарь должен знать только, где находится узел в памяти, а не в какой-то полностью отдельной структуре данных.
Чтобы упростить пример (и я прошу прощения, если я оскорбляю ваш интеллект здесь, но неся со мной, поскольку это может по крайней мере прояснить смысл для кого-то другого), предположим, что у вас есть простой LinkedList<int>
, содержащий все уникальные целые числа. Затем вы перечисляете этот список и используете его для построения Dictionary<int, LinkedListNode<int>>
, предполагая, что вы хотите быстро найти узел на основе его значения.
Нужно ли в словаре знать, где в связанном списке у каждого узла есть? Конечно, не только там, где он находится в памяти. После того, как вы нашли свой узел на основе его значения в O (1) с помощью словаря, вы, конечно, можете легко пересечь связанный список вперед или назад, используя сам узел, который, как известно, известен (по дизайну) связанного списка содержащий его.
Это то же самое, что и в вашей иерархической структуре, только немного сложнее, чем связанный список. Но тот же принцип применяется.
Эта информация хранится в БД? –
Являются ли данные организованными или отсортированными каким-либо образом? Если в коде есть шаблон или правило, которое есть у детей, вы можете использовать это, чтобы сократить пространство поиска. – jelbourn
@Abe: Нет, это в памяти. Он был сериализован в XML-файл, поэтому я могу получить его при запуске программы. –