private void AddNode(string key, T data, Node <T> node) { if (string.IsNullOrEmpty(key)) { if (!node.IsWord) { node.Data = data; node.IsWord = true; } } else { var symbol = key[0]; var subnode = node.TryFind(symbol); if (subnode != null) { AddNode(key.Substring(1), data, subnode); } else { var newNode = new Node <T>(key[0], data, node.Prefix + key[0]); node.SubNodes.Add(key[0], newNode); AddNode(key.Substring(1), data, newNode); } } }
private bool SearchNode(string key, Node <T> node, out T value) { value = default(T); var result = false; if (string.IsNullOrEmpty(key)) { if (node.IsWord) { value = node.Data; result = true; Console.WriteLine(node); } else { Console.WriteLine("Not found!"); } } else { var subnode = node.TryFind(key[0]); if (subnode != null) { result = SearchNode(key.Substring(1), subnode, out value); } } return(result); }
private void RemoveNode(string key, Node <T> node) { if (string.IsNullOrEmpty(key)) { if (node.IsWord) { node.IsWord = false; } } else { var subnode = node.TryFind(key[0]); if (subnode != null) { RemoveNode(key.Substring(1), subnode); } } }