home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / yacl-012.zip / basedemo / btree / treeprnt.cxx < prev    next >
C/C++ Source or Header  |  1994-10-14  |  1KB  |  48 lines

  1.  
  2.  
  3. #include "base/gbtree.h"
  4. #include <iostream.h>
  5. #include <iomanip.h>
  6.  
  7. void TreePrint (CL_GenericBTreeNode* root, short level)
  8. {
  9.     if (!root)
  10.         return;
  11.     CL_BTreeNodeSpace* space = root->NodeSpace();
  12.     CL_GenericBTreeNode* child;
  13.     child = space->BorrowNode (root->Subtree(0));
  14.     TreePrint (child, level+1);
  15.     space->ReturnNode (child);
  16.     register short n = root->Size();
  17.     for (short i = 0; i < n; i++) {
  18.         for (short j = 0; j < 4*level; j++) cout << ' '; // Indentation
  19.         cout << (i == n/2 ? "|---> |" : "|     |");
  20.         cout << (long) root->Item (i) << endl;
  21.         child = space->BorrowNode (root->Subtree(i+1));
  22.         TreePrint (child, level+1);
  23.         space->ReturnNode (child);
  24.     }
  25. }
  26.  
  27. void PrettyPrint (const CL_GenericBTree& tree)
  28. {
  29.     CL_BTreeNodeSpace* space = tree.NodeSpace();
  30.     CL_GenericBTreeNode* root = space->BorrowRoot ();
  31.     TreePrint (root, 0);
  32.     space->ReturnNode (root);
  33. }
  34.  
  35.  
  36.  
  37.  
  38. void main ()
  39. {
  40.     CL_AbstractComparator cmp;
  41.     CL_GenericBTree tree (cmp);
  42.     long num[] = { 42, 49, 63, 75, 15, 23, 37, 41, 81, 99};
  43.     for (short i = 0; i < sizeof num/sizeof (long); i++)
  44.         tree.Add ((void*) num[i]);
  45.     PrettyPrint (tree);
  46. }
  47.  
  48.