fork(7) download
  1. #include <iostream>
  2. #include <map>
  3. using namespace std;
  4.  
  5. struct Node {
  6. int info;
  7. Node *left;
  8. Node *right;
  9. } *tree;
  10.  
  11. void Add(int a, Node **tree) {
  12. if ((*tree) == NULL) {
  13. (*tree) = new Node;
  14. (*tree)->info = a;
  15. (*tree)->left = (*tree)->right = NULL;
  16. return;
  17. }
  18. if (a > (*tree)->info) {
  19. Add(a, &(*tree)->right);
  20. } else {
  21. Add(a, &(*tree)->left);
  22. }
  23. }
  24.  
  25. void Print(Node *tree) {
  26. if (tree == NULL) {
  27. return;
  28. }
  29. cout << tree->info << endl;
  30. Print(tree->left);
  31. Print(tree->right);
  32. }
  33.  
  34. void Count(Node* tree, map<int,int>&m, int level)
  35. {
  36. m[level]++;
  37. if (tree->left) Count(tree->left,m,level+1);
  38. if (tree->right) Count(tree->right,m,level+1);
  39. }
  40.  
  41. int main() {
  42. int n;
  43. int info;
  44. cout << "Enter number of elements: "; cin >> n;
  45.  
  46. for (int i = 0; i < n; i++) {
  47. cout << "Enter " << i + 1 << " elements: "; cin >> info;
  48. Add(info, &tree);
  49. }
  50. cout << "Tree: " << endl;
  51. Print(tree);
  52.  
  53. map<int,int> m;
  54. Count(tree,m,0);
  55. for(auto i: m)
  56. {
  57. cout << "На уровне " << i.first << " находится " << i.second << "узлов.\n";
  58. }
  59.  
  60. return 0;
  61. }
  62.  
Success #stdin #stdout 0s 3476KB
stdin
16 5 6 4 7 3 8 2 9 1 8 3 7 4 6 5 0
stdout
Enter number of elements: Enter 1 elements: Enter 2 elements: Enter 3 elements: Enter 4 elements: Enter 5 elements: Enter 6 elements: Enter 7 elements: Enter 8 elements: Enter 9 elements: Enter 10 elements: Enter 11 elements: Enter 12 elements: Enter 13 elements: Enter 14 elements: Enter 15 elements: Enter 16 elements: Tree: 
5
4
3
2
1
0
3
4
5
6
6
7
7
8
8
9
На уровне 0 находится 1узлов.
На уровне 1 находится 2узлов.
На уровне 2 находится 4узлов.
На уровне 3 находится 4узлов.
На уровне 4 находится 4узлов.
На уровне 5 находится 1узлов.