fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. struct Node {
  6. int key;
  7. int value; // Folosim value pentru a stoca frecvența
  8. Node* left;
  9. Node* right;
  10.  
  11. Node(int k) : key(k), value(1), left(nullptr), right(nullptr) {}
  12. };
  13.  
  14. class BSTMap {
  15. private:
  16. Node* root;
  17.  
  18. // Inserare recursivă, creștem valoarea (frecvența) dacă cheia există
  19. Node* insert(Node* node, int key) {
  20. if (!node) return new Node(key);
  21. if (key < node->key)
  22. node->left = insert(node->left, key);
  23. else if (key > node->key)
  24. node->right = insert(node->right, key);
  25. else
  26. node->value++; // Creștem frecvența dacă cheia există
  27. return node;
  28. }
  29.  
  30. // Căutare recursivă
  31. Node* search(Node* node, int key) {
  32. if (!node || node->key == key) return node;
  33. if (key < node->key) return search(node->left, key);
  34. return search(node->right, key);
  35. }
  36.  
  37. // Parcurgere in-order pentru a afișa frecvențele
  38. void inorder(Node* node) {
  39. if (!node) return;
  40. inorder(node->left);
  41. std::cout << node->key << " appears " << node->value << " times\n";
  42. inorder(node->right);
  43. }
  44.  
  45. public:
  46. BSTMap() : root(nullptr) {}
  47.  
  48. // Funcție publică pentru inserare
  49. void insert(int key) {
  50. root = insert(root, key);
  51. }
  52.  
  53. // Funcție publică pentru a obține frecvența
  54. int get(int key) {
  55. Node* node = search(root, key);
  56. return node ? node->value : 0; // 0 dacă cheia nu există
  57. }
  58.  
  59. // Afișarea frecvențelor
  60. void print() {
  61. inorder(root);
  62. }
  63. };
  64.  
  65. int main() {
  66. std::vector<int> arr = {7, 8, 8, 8, 7, 5, 55, 55, 101, 4, 7, 101, 1, 4};
  67.  
  68. BSTMap myMap;
  69.  
  70. // Inserăm fiecare element din array în arbore
  71. for (int num : arr) {
  72. myMap.insert(num);
  73. }
  74.  
  75. // Afișăm frecvențele
  76. myMap.print();
  77.  
  78. return 0;
  79. }
  80.  
Success #stdin #stdout 0s 5288KB
stdin
Standard input is empty
stdout
1 appears 1 times
4 appears 2 times
5 appears 1 times
7 appears 3 times
8 appears 3 times
55 appears 2 times
101 appears 2 times