public void InsertTest1()
        {
            tree.Insert("cute", 1);
            tree.Insert("cup", 2);
            tree.Insert("at");
            tree.Insert("as");
            tree.Insert("he", 3);
            tree.Insert("us", 4);
            tree.Insert("i", 1);

            Triplet[] expected = new Triplet[] {
                new Triplet('c', 0, false),

                new Triplet('a', 0, false),
                new Triplet('u', 0, false),
                new Triplet('h', 0, false),

                null,
                new Triplet('t', 0, true),
                null,
                null,
                new Triplet('t', 0, false),
                null,
                null,
                new Triplet('e', 3, true),
                new Triplet('u', 0, false),

                new Triplet('s', 0, true),
                null,
                null,
                new Triplet('p', 2, true),
                new Triplet('e', 1, true),
                null,
                null,
                null,
                null,
                new Triplet('i', 1, true),
                new Triplet('s', 4, true),
                null,
                null, null, null, null, null, null, null, null, null, null, null, null, null, null, null
            };
            CollectionAssertEx.AreEqual(expected, tree.BFS(x => new Triplet(x.Char, x.Value, x.IsEos)));
        }
 public static IEnumerable <TR> BFS <TI, TR>(this TernarySearchTree <TI> @this, Func <TernarySearchTreeNode <TI>, TR> selectFunc) where TR : class
 {
     return(@this.BFS().Select(x => x != null ? selectFunc.Invoke(x) : null));
 }