Daraxtsimon maʻlumotlar tuzilmalari. Taʻriflar va xususiyatlar


Download 10.1 Kb.
bet2/3
Sana02.06.2024
Hajmi10.1 Kb.
#1839727
1   2   3
Bog'liq
Daraxtsimon maʻlumotlar tuzilmalari

daraxtlar

  • #include
  • #include
  • using namespace std;
  • int main() {
  • // Telefon raqamlari va mijozlar
  • map telefonlar = {
  • {"Ali", "12345"},
  • {"Vali", "67890"},
  • {"Hasan", "54321"},
  • {"Husan", "09876"}
  • };
  • // Daraxtdagi elementlarni chiqarish
  • cout << "Mijozlar va ularning telefonlari:\n";
  • for (const auto& pair : telefonlar) {
  • cout << pair.first << ": " << pair.second << endl;
  • }
  • return 0;
  • }

Rekursiya

Rekursiya, dasturlashda funksiya tomonidan o'ziga murojaat qilish, ya'ni o'z ichiga o'zini takrorlash jarayonidir. Boshqa so'zlar bilan aytganda, rekursiya - funksiya tomonidan o'z ichidagi funksiyaga chaqirishdir.

Rekursiv funksiyalar odatda quyidagi ikki shartni bajarishadi:

  • Birorta qo'llanuvchi shart: Rekursiv funksiya chaqirishlari belgilangan shart bo'yicha to'xtaydi. Bu shart rekursiv chaqirishlarni cheklash uchun muhimdir, aks holda dastur doimiy tarzda o'z-i-o'zi chaqirish qiladi va to'xtay olmaydi.
  • Base case (Boshlang'ich holat): Bu holat rekursiv funksiya ichida shart bo'yicha to'xtash shartnomasi. Bu, rekursiv funksiyaning qachon to'xtashi kerakligini aytadi va chaqirishlar qanday payt qo'llanishi kerakligini aniqlaydi.
  • Daraxtsimon ma'lumotlar tuzilmalari, masalan, daraxtlar (ko'p qatorli yoki yagona qatorli), grafiklar va boshqalar, ma'lumotlarni uzluksiz tarzda saqlash uchun ishlatiladi. Rekursiya esa shu tuzilmalar ichida ma'lumotlarni qayta ishlov berishda juda foydali bo'lishi mumkin.

#include

  • #include
  • #include
  • using namespace std;
  • // Daraxtsimon ma'lumotlar tuzilmasi uchun daraxt elementini ifodalovchi sinf
  • class Node {
  • public:
  • int data;
  • vector children;
  • Node(int data) {
  • this->data = data;
  • }
  • // Rekursiv funksiya - daraxtning balandligini aniqlash
  • int height() {
  • if (children.empty()) {
  • return 1;
  • } else {
  • int max_height = 0;
  • for (Node* child : children) {
  • max_height = max(max_height, child->height());
  • }
  • return max_height + 1;
  • }
  • }
  • };
  • int main() {
  • // Daraxtni yaratish
  • Node* root = new Node(1);
  • Node* child1 = new Node(2);
  • Node* child2 = new Node(3);
  • Node* grandchild1 = new Node(4);
  • Node* grandchild2 = new Node(5);
  • // Daraxtni bog'lash
  • root->children.push_back(child1);
  • root->children.push_back(child2);
  • child1->children.push_back(grandchild1);
  • child2->children.push_back(grandchild2);
  • // Daraxtning balandligini aniqlash
  • cout << "Daraxt balandligi: " << root->height() << endl;
  • return 0;
  • }

Download 10.1 Kb.

Do'stlaringiz bilan baham:
1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling