TreeNode GetNode (int index)
{
#if DEBUG
if (index < 0)
Debug.Assert (false, "index must be >=0 but was " + index + "." + Environment.NewLine + "Stack trace:" + Environment.StackTrace);
#endif
var node = tree.Root;
int i = index;
while (true) {
if (node == null)
return null;
if (node.left != null && i < node.left.Count) {
node = node.left;
} else {
if (node.left != null) {
i -= node.left.Count;
}
if (i <= 0)
return node;
i--;
node = node.right;
}
}
}
#endregion