Может быть вопрос немного туповат, на понимание структур данных, но все же
Допустим есть объект дерева:
Tree node
У класса Tree есть только 2 свойства node.right и node.left
Эта структура дана мне сверху я вносить изменения в ее класс не могу.
Мне известен корень дерева. И я хочу расширить струтуру и добавить эмуляцию свойства node.parent (но напрямую исправить/наследовать класс Tree я не могу и добавить туда свойство parent я тоже не могу).
Можно ли создать:
1) массив объектов parent[]
2) коллекцию
3) или же такое можно сделать только с помощью hashtable?
чтобы операции выполнялись в обе стороны как ниже:
parent[node2] = node1;
parent[node3] = node2;
node2 = parent[node3];
node1 = parent[node2];
Здравствуйте, PaulMinelly, Вы писали:
PM>Да, уточню, вопрос в том, какие еще структуры можно использовать кроме hashtable? PM>Например C# массив, коллекцию или что-то еще другое для этих целей?
Насколько я понимаю, выбор структуры данных очень зависит от многих вопросов, например:
1) Когда(и сколько раз) эти данные создаются?
2) Когда(и сколько раз) эти данные редактируются?
3) Сколько раз эти данные используются?
4) Какие характерные объёмы данных?
В случае ответов
1 раз
никогда
Очень много
Большие, но меньшие чем характерная оперативная память
Здравствуйте, Nuseraro, Вы писали:
N>Здравствуйте, PaulMinelly, Вы писали:
PM>>Да, уточню, вопрос в том, какие еще структуры можно использовать кроме hashtable? PM>>Например C# массив, коллекцию или что-то еще другое для этих целей?
N>В случае ответов N>1 раз N>никогда N>Очень много N>Большие, но меньшие чем характерная оперативная память
N>Hashtable неплохой выбор
В дано такого не сказано, надо было придумать еще другие стурктуры как это можно хранить в C#.
Только как? Какие еще варианты можно использовать кроме хеша?
Здравствуйте, PaulMinelly, Вы писали:
PM>Здравствуйте, Nuseraro, Вы писали:
N>>Здравствуйте, PaulMinelly, Вы писали:
PM>>>Да, уточню, вопрос в том, какие еще структуры можно использовать кроме hashtable? PM>>>Например C# массив, коллекцию или что-то еще другое для этих целей?
N>>В случае ответов N>>1 раз N>>никогда N>>Очень много N>>Большие, но меньшие чем характерная оперативная память
N>>Hashtable неплохой выбор
PM>В дано такого не сказано, надо было придумать еще другие стурктуры как это можно хранить в C#. PM>Только как? Какие еще варианты можно использовать кроме хеша?
Наиболее здоровой мне кажется идея создать класс, в котором сидел бы TreeNode и ссылка на его родителя, и сохранить интерфейс класса TreeNode с делегированием на внутренний TreeNode. А потом работать с этим, новым TreeNode.