C# работа с деревьями | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Понадобилось извлечь данные из закодированного в DER (ASN.1) файла. Нашёл github.com , хватило одного ASN1Decoder.cs что бы распарсить файл. В итоге имеется объект, класс которого описан:
где ArrayList _childs - это объекты класса ASN1Element. Т.е. получилось дерево. Встал вопрос - как получить нужные данные из этого дерева? Понятно, что можно написать рекурсивную функцию, которая просматривает дерево, находит элемент с нужным значением в _data и возвращает значение. Точнее, она уже написана, но грызут сомнения - может вопрос можно решить как то иначе? Например, с помощью LINQ? Или, может в C# есть какая то стандартная библиотека для работы с деревьями? Господа - какие есть мысли по этому поводу? |
Re: C# работа с деревьями | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Хм-м-м. Стандартный метод работы с деревьями это и есть рекурсия. Не думаю что любого рода обёртка (будь то LINQ или ещё какой-либо проект) будет лучше и проще чем простая рекурсивная, или на стеке основанная (как замена "чистой" рекурсии) функция...
------------------ WBR, Igor |
Re: C# работа с деревьями | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Т.е. использовать для поиска в дереве самописную рекурсивную функцию и не париться по этому поводу...
|
Re: C# работа с деревьями | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Я бы именно так и сделал
Если деревья сильно глубокие (но я уверен что DER-файл это явно не тот случай), то не рекурсивную, а на стеке основанную - т.е. вместо забивания стека рантайма рекурсивными вызовами (т.к. ошибки переполнения стека очень "неудобные" для обработки) просто в цикле так или иначе пользовать объект System.Collections.Generic.Stack<T> - а то и плоские коллекции, если задача позволяет. ------------------ WBR, Igor |
© 2000-2024 Fox Club  |