Advertisement
Guest User

T-tree

a guest
Feb 18th, 2012
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.99 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. typedef struct TT
  6. {
  7.     TT *parent;
  8.     void *data;
  9.     void **control;
  10.     TT *left, *right;
  11.  
  12. } TT;
  13.  
  14. void InitTT(TT **tree, void *buffer)
  15. {
  16.     TT *newtree = new TT();
  17.     newtree->data = buffer;
  18.     newtree->control = &newtree->data;
  19.     newtree->left = new TT();
  20.     newtree->right = new TT();
  21.    
  22.     *tree = newtree;
  23. }
  24.  
  25. template <class X> void AddNode(TT **tree, X data)
  26. {
  27.     if(*tree == 0 || *tree == (void*)0)
  28.     {
  29.         InitTT(tree, reinterpret_cast<void*>(data));
  30.     }
  31.     else
  32.     {
  33.         TT *newtree = new TT();
  34.         newtree->parent = *tree;
  35.         newtree->data = reinterpret_cast<void*>(data);
  36.         newtree->control = &newtree->data;
  37.  
  38.         if((int((*tree)->control)) >= (int(data)))
  39.         {
  40.             (*tree)->left = newtree;
  41.         }
  42.         else
  43.         {
  44.             (*tree)->right = newtree;
  45.         };
  46.     };
  47. }
  48.  
  49. void main(void)
  50. {
  51.     TT *mytree = 0;
  52.     int nums[] = { 0xff, 0xa, 0xf, 1, 5, 3, 2, 0xfff, 0xaa, 0x10 };
  53.  
  54.     for(int i = 0; i < sizeof(nums)/sizeof(int); i++)
  55.     {
  56.         AddNode<int>(&mytree, nums[i]);
  57.     };
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement