BST Dump Methods
void OAA<K,D,P>::Dump (std::ostream& os, int dw, char fill) const // dw = data width
// displays keys only
{
if (root_ == 0)
return;
Node* fillNode = NewNode(K(),D()); // placeholder in queue
Queue < Node * , Deque < Node * > > Que;
Node * current;
size_t currLayerSize, nextLayerSize, j, k;
Que.Push(root_);
currLayerSize = 1;
k = 1; // 2^LayerNumber
while (currLayerSize > 0)
{
nextLayerSize = 0;
if (dw == 1) os << ' '; // indent picture 1 space
for (j = 0; j < k; ++j)
{
current = Que.Front();
Que.Pop();
if (dw > 1) os << ' '; // indent each column 1 space
if (current == fillNode)
{
os <<std::setw(dw) << fill;
}
else
{
os << ColorMap(current->flags_) << std::setw(dw) << current->key_<< ANSI_COLOR_RESET;
}
if (current->lchild_ != 0)
{
Que.Push(current->lchild_);
++nextLayerSize;
}
else
{
Que.Push(fillNode);
}
if (current->rchild_ != 0)
{
Que.Push(current->rchild_);
++nextLayerSize;
}
else
{
Que.Push(fillNode);
}
}
os << '\n';
currLayerSize = nextLayerSize;
k *= 2;
} // end while
Que.Clear();
delete fillNode;
} // Dump(os, dw, fill) */