| | | | | |

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) */

| | Top of Page | 12. Binary Search Trees - 24 of 27