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); } }
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); }
public void Clear() { _root = new RWayNode(); _count = 0; }