Я сделал это (реализация trie) в C с 8-битными символами и просто использовал версию массива (как указано в ответе "26 символов").
ОДНАКО, я предполагаю, что вам нужна полная поддержка юникода (поскольку среди других причин .NET char - это юникод). Предполагая, что вам нужна поддержка юникода, поиск по хешу / карте / словарю, вероятно, является лучшим выбором, поскольку массив записей по 64 КБ в каждом узле будет работать не очень хорошо.
О единственном хакерском подходе, о котором я мог подумать, это хранить целые строки (суффиксы или, возможно, "исправления") в ветвях, которые еще не разбиты, в зависимости от того, насколько разреженным является дерево, т. Е. Trie. Это добавляет много логики для обнаружения строк из нескольких символов и разделения их, когда вводится альтернативный путь.
Что такое шаблон чтения и обновления?
---- обновление июль 2013 ---
Если в .NET-строках есть функция, подобная java, для получения байтов для строки (как UTF-8), то, возможно, хорошим выходом будет наличие массива в каждом узле для представления значения байта текущей позиции. Вы могли бы даже сделать массивы переменного размера, с указателями первых / последних границ в каждом узле, поскольку МНОГИЕ узлы в любом случае будут иметь только строчные буквы ASCII, или только заглавные буквы или цифры 0-9.