internal Enumerator(OptimizedBTree <TKey, TValue> tree)
 {
     _tree       = tree;
     _enumerator = tree.Traverse().GetEnumerator();
     _version    = tree._version;
     _index      = -1;
 }
 public BTreeNode(OptimizedBTree <TKey, TValue> tree, bool isLeaf)
 {
     _tree  = tree;
     KeyNum = 0;
     Items  = new KeyValuePair <TKey, TValue> [_tree.MaxKeyNum]; // t-1 ~ 2t-1
     if (!isLeaf)
     {
         Children = new BTreeNode[_tree.MaxDegree];        // t ~ 2t
     }
 }
 public void Invalidate()
 {
     _tree  = null;
     KeyNum = 0;
     if (Children != null)
     {
         Array.Clear(Children, 0, Children.Length);
     }
     if (Items != null)
     {
         Array.Clear(Items, 0, Items.Length);
     }
     Children = null;
     Items    = null;
     Parent   = null;
 }