• Savol: Binar daraxtning tugunlari sonini aniqlashning algoritmi va dasturini keltiring
  • Muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalar universiteti ma’lumotlar tuzilmasi va algoritm




    Download 299.13 Kb.
    Sana13.12.2023
    Hajmi299.13 Kb.
    #118066
    Bog'liq
    mta 6
    comparison of study in the USA and home country essay, Qurdoshev Mirjalol 3-mustqil ish, ТЕСТЫ ДЛЯ 4, 2-олий мустақил иш, 1-amaliy mashgulot 1, 15b683d9-5724-47ac-8764-8b446061f93e (1), Axborot matnlar bilan ishlash va media madaniyat, Ijtimoyi mediya shakllari

    O’ZBEKISTON RESPUBLIKASI O’LIY TA’LIM , FAN VA INNOVATSIYALAR VAZIRLIGI
    MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALAR UNIVERSITETI


    Ma’lumotlar tuzilmasi va algoritm
    6-Amaliy ish topshirig’i
    Guruhi: SWD-018-2
    Bajardi : Mamatov Sherzod
    Tekshirdi : Bo’riyev Yusuf

    Daraxt ko’rinishidagi ma’lumotlar


    tuzilmasi haqida umumiy tushunchalar.


    Daraxt ma'lumotlar strukturasi - ierarxik tuzilma bo'lib, u ma'lumotlarni navigatsiya qilish va qidirish uchun qulay tarzda taqdim etish va tartibga solish uchun ishlatiladi. Bu qirralar bilan bog'langan va tugunlar o'rtasida ierarxik munosabatlarga ega bo'lgan tugunlar to'plamidir.

    Daraxtning eng yuqori tuguniga ildiz deyiladi, uning ostidagi tugunlarga esa bola tugunlari deyiladi. Har bir tugun bir nechta tugunlarga ega bo'lishi mumkin va bu tugunlar ham rekursiv tuzilmani tashkil etuvchi o'z tugunlariga ega bo'lishi mumkin.



    Ildiz tugun daraxt ierarxiyasining eng yuqori tugunidir. Boshqacha qilib aytganda, ildiz tugunlari ota-onasi bo'lmagan tugundir. Yuqoridagi strukturada 1-raqamli tugun daraxtning ildiz tugunidir. Agar tugun to'g'ridan-to'g'ri boshqa tugun bilan bog'langan bo'lsa, u ota-ona munosabatlari deb ataladi

    Tugunlar: Tugunlar ma'lumotlaringizning qiymatini saqlaydi, bu raqamlar, satrlar va boshqalar
    Ildiz: Ildiz tugun daraxtning birinchi tugunidir. Yuqoridagi misolda ildiz tugun 2 ga teng.
    Child: Ildiz tugunidan uzoqroqda joylashgan boshqa tugunga bevosita bog'langan tugun.
    Parent:Bolaning teskarisi
    Siblings:: bir xil ota-onaga ega bo'lgan tugunlar guruhi. Yuqoridagi misolda 9,12,8,99,10 barcha birodarlardir.
    Leaf: bolalari bo'lmagan tugun. Yuqorida, 2 barg tuguniga misoldir.

    Savol: Binar daraxtning tugunlari sonini aniqlashning algoritmi va dasturini keltiring

    #include


    using namespace std;

    // Node structure for the binary tree


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

    // Create a new node


    Node* newNode(int value) {
    Node* node = new Node();
    node->data = value;
    node->left = nullptr;
    node->right = nullptr;
    return node;
    }

    // Function to count nodes excluding the root


    int countNodesExcludingRoot(Node* root) {
    if (root == nullptr)
    return 0;
    int count = 0; // Initialize count as -1 to exclude the root node
    if (root->left)
    count += countNodesExcludingRoot(root->left) + 1;
    if (root->right)
    count += countNodesExcludingRoot(root->right) + 1;
    return count;
    }

    int main() {


    Node* root = newNode(10);
    root->left = newNode(5);
    root->right = newNode(15);
    root->left->left = newNode(3);
    root->left->right = newNode(7);
    root->right->left = newNode(12);
    root->right->right = newNode(18);

    int nodesCount = countNodesExcludingRoot(root);


    cout << "Number of nodes excluding root: " << nodesCount << endl;

    return 0;


    }

    XULOSA
    Daraxt ko'rinishidagi ma'lumotlar tuzilmasi haqida umumiy tushunchalar yozib berishimiz mumkin. Daraxt tuzilmasi bir nechta tugunlardan iborat bo'ladi. Har bir tugun o'ziga xos kalitni saqlaydi va o'ng yoki chap o'lchamdagi boshqa tugunga o'zgartirish orqali ma'lumotlar tuzilmasida joylashadi. Daraxtning boshida o'lchamli tugun joylashadi, undan o'ng tomonida kichik kelgan tugunlar joylashadi, va chap tomonida katta kelgan tugunlar joylashadi. Daraxtning boshidagi tugun "rizq" deb nomlanadi va u erda boshqa tugunlarga yo'l qo'yish uchun o'zgartirishlar saqlanadi. Tugunlar o'ng va chap o'lchamdagi tugunlarga qarab tartiblangan holda joylashadi. Daraxtda eng kichik tugun "engKichikKalit" deb nomlanadi va uni topish uchun "engKichikKalitniTopish" funktsiyasi ishlatiladi. Buning o'ng tomonidagi katta tugun "engKattaKalit" deb nomlanadi va uni topish uchun "engKattaKalitniTopish" funktsiyasi ishlatiladi. Shu bilan birga, dastur foydalanuvchidan elementlar sonini oladi va har bir elementni kiriting. Dastur tugunlarni qo'shadi va eng kichik tugunni va eng katta tugunni topadi. Agar eng kichik tugun bo'sh bo'lsa, "Bo'sh daraxt!" degan xabarni chiqaradi. Agar eng katta tugun bo'sh bo'lsa, "Bo'sh daraxt!" degan xabarni chiqaradi. Agar eng kichik tugun va eng katta tugun mavjud bo'lsa, ularning qiymatlarini chiqaradi.



    Kod C++ tilida "UzNode" nomli klassdan foydalanib, ichki qidiruv daraxtasi ma'lumot tuzilmasini aniqlaydi. Daraxt tuzilmasi elementlardan iborat bo'ladi, har bir elementning kalit qiymati va chap-ong o'lchamdagi tugunlarga ko'rsatuvchi o'zgaruvchilari mavjud.


    Kod "qoshish" funktsiyasini o'z ichiga oladi, bu funksiya daraxtga element qo'shish uchun ishlatiladi. Agar daraxt bo'sh bo'lsa, yangi bir "UzNode" obyekt yaratiladi va berilgan kalit qiymati va null qiymatga ega bo'lgan tugunlar orqali bu obyektga bog'langan. Aks holda, berilgan kalit qiymatiga qarab daraxtda yuqori yoki pastgi tugunlarga o'tish amalga oshiriladi.


    "engKichikKalitniTopish" funktsiyasi daraxtning eng kichik kalit qiymatli tugunini topish uchun ishlatiladi. Agar daraxt bo'sh bo'lsa, null qiymat qaytariladi. Aks holda, daraxtda bosh tugun bo'lsa, u qaytariladi. Aks holda, daraxtning chap tomonidagi tugunlarga qarab rekursiv ravishda qidiruv amalga oshiriladi.


    "engKattaKalitniTopish" funktsiyasi daraxtning eng katta kalit qiymatli tugunini topish uchun ishlatiladi. Agar daraxt bo'sh bo'lsa, null qiymat qaytariladi. Aks holda, daraxtda o'ng tomonidagi tugun bo'lsa, u qaytariladi. Aks holda, daraxtning o'ng tomonidagi tugunlarga qarab rekursiv ravishda qidiruv amalga oshiriladi.


    Asosiy funksiyada foydalanuvchi elementlar sonini kiritishi so'raladi. Keyin, foydalanuvchidan bir nechta kalit qiymatlari kiritishi so'raladi va "qoshish" funktsiyasi yordamida bu qiymatlarni daraxtga qo'shadi.


    Daraxt tuzilgandan so'ng, "engKichikKalitniTopish" funktsiyasi yordamida daraxtda eng kichik kalit qiymatli tugun topiladi va "engKattaKalitniTopish" funktsiyasi yordamida daraxtda eng katta kalit qiymatli tugun topiladi. Agar bu tugunlar mavjud bo'lsa, ularning qiymatlari konsolga chiqariladi. Aks holda, daraxtning bo'shligi haqidagi xabar konsolga chiqariladi.

    Foydalanilgan adabiyotlar



    1. https://www.prepbytes.com/blog/tree/data-structures-in-c-trees-graph-3/

    2. https://www.softwaretestinghelp.com/trees-in-cpp/

    3. https://betterprogramming.pub/a-look-at-the-tree-data-structure-in-c-49a33bc841eb

    4. https://www.digitalocean.com/community/tutorials/trie-data-structure-in-c-plus-plus

    5. https://www.cs.cmu.edu/~clo/www/CMU/DataStructures/Lessons/lesson4_1.htm

    6. https://www.geeksforgeeks.org/introduction-to-tree-data-structure-and-algorithm-tutorials/

    Download 299.13 Kb.




    Download 299.13 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalar universiteti ma’lumotlar tuzilmasi va algoritm

    Download 299.13 Kb.