public void AddChild(byte[] str, int idx, int data)
{
if (_children == null)
{
_children = new List<Node>(1);
_childChars = new List<byte>(1);
}
int childIdx = _childChars.IndexOf(str[idx]);
if (childIdx < 0)
{
childIdx = _children.Count;
_children.Add(new Node());
_childChars.Add(str[idx]);
}
if (idx < str.Length - 1)
{
_children[childIdx].AddChild(str, idx + 1, data);
}
else
{
_children[childIdx].SetData(data);
}
}