Esempio n. 1
0
        private IEnumerable <RWayNode> Traversal(RWayNode node)
        {
            if (node == null)
            {
                yield break;
            }

            var stack = new Stack <RWayNode>();

            stack.Push(node);

            while (stack.Count > 0)
            {
                var n = stack.Pop();
                foreach (var child in n)
                {
                    if (child.Value != null)
                    {
                        stack.Push(child.Value);
                    }
                }

                yield return(n);
            }
        }
Esempio n. 2
0
        public void Add(String key, TElement element)
        {
            key = (key ?? String.Empty);

            var node = _root;

            foreach (var @char in key)
            {
                var child = node[@char];
                if (child == null)
                {
                    child       = new RWayNode();
                    node[@char] = child;
                }

                node = child;
            }

            if (node.Grouping == null)
            {
                node.Grouping = new Grouping();
                _count++;
            }

            node.Grouping.Key = key;
            node.Grouping.Add(element);
        }
Esempio n. 3
0
 public void Clear()
 {
     _root  = new RWayNode();
     _count = 0;
 }