[ create a new paste ] login | about

Link: http://codepad.org/Ea2Rkld8    [ raw code | output | fork ]

C++, pasted on Oct 19:
#include <iostream>


struct tree {
   int   data;
   tree* left;
   tree* right;
};


// добавление
void add_data(tree*& t, int data) {
    if(t == NULL) {
          t  = new tree();
          t->data  = data;
          t->left  = NULL;
          t->right = NULL;
          return;
    }

    if(data < t->data)
         add_data(t->left, data);
    else
         add_data(t->right, data);
}



// симметричный обход
void show_all(tree* t, std::ostream& hout) {
   if(t == NULL)
       return;
   show_all(t->left, hout);
   hout << t->data << ' ';
   show_all(t->right, hout);
}



// чистка
void remove_all(tree* t) {
   if(t == NULL)
       return;
   remove_all(t->left);
   remove_all(t->right);
   delete t;
}



// кол-во элементов на указанной глубине-x
int counter(tree* t, int x) {
    if((t == NULL) || (x <= 0))
        return 0;
    else {
        x--;
        int n = counter(t->left, x) + counter(t->right, x) + 1;
        return n;
    }
}




int main(void){
    tree* t = NULL;

    for(int i = 0; i < 30; i++)
         add_data(t, std::rand() % 10);

    int x = 5;
    int n = counter(t, x);
    std::cout << "кол-во узлов на указанной глубине: " << n << std::endl;

    show_all(t, std::cout);

    remove_all(t);
    return 0;
}


Output:
1
2
кол-во узлов на указанной глубине: 21
0 0 0 1 1 2 2 2 2 2 3 3 3 3 5 5 5 6 6 6 6 6 7 7 7 7 8 9 9 9 


Create a new paste based on this one


Comments: