Example #1
0
 /// <summary>
 /// DFS traversal starting from given TrieNode and yield.
 /// </summary>
 private IEnumerable <TResult> Traverse <TResult>(TrieNode <TValue> trieNode,
                                                  StringBuilder buffer, Func <StringBuilder, TValue, TResult> transform)
 {
     if (trieNode == null)
     {
         yield break;
     }
     if (trieNode.HasValue())
     {
         yield return(transform
                      (
                          buffer, trieNode.Value
                      ));
     }
     foreach (var child in trieNode.GetChildren())
     {
         // buffer is not used always but it's ok
         buffer.Append(child.Character);
         foreach (var item in Traverse(child, buffer, transform))
         {
             yield return(item);
         }
         buffer.Length--;
     }
 }