public void Add([NotNull] string value) { TrieNode node; if (!_nodes.TryGetValue(value[0], out node)) { node = new TrieNode(value[0], value.Length == 1 ? value : null, null); _nodes.Add(value[0], node); } else { if (value.Length == 1) { node.Value = value; } } for (var i = 1; i < value.Length; i++) { node = node.Add(value[i], i == value.Length - 1 ? value : null); } }
public TrieNode Add(char ch, [CanBeNull] string value) { TrieNode node; if (!_nodes.TryGetValue(ch, out node)) { node = new TrieNode(ch, value, this); _nodes.Add(ch, node); } else { if (value != null) { node.Value = value; } } return node; }