private void ToArrayAux(AleRBTreeNode <TKey, TData>[] A, AleRBTreeNode <TKey, TData> node, int Lo, int Hi) { int i; if (node.Left == null) { i = Lo; } else if (node.Right == null) { i = Hi; } else { i = Lo + node.Left.Count; } A[i] = node; if (node.Left != null) { ToArrayAux(A, node.Left, Lo, i - 1); } if (node.Right != null) { ToArrayAux(A, node.Right, i + 1, Hi); } }
public AleRBTreeNode(TKey NewKey, TData NewData) { _IsRed = false; _Count = 1; _Data = NewData; _Key = NewKey; _Left = null; _Right = null; _Parent = null; }
public AleRBTreeNode <TKey, TData>[] ToArray() { AleRBTreeNode <TKey, TData>[] res = new AleRBTreeNode <TKey, TData> [_Count]; ToArrayAux(res, this, 0, _Count - 1); return(res); }