Mustaqil ish fan: Diskret tuzulmalar Tayyorladi: Ergashov Maqsud Qarshi-2021 Mavzu



Yüklə 66,79 Kb.
səhifə1/4
tarix24.12.2023
ölçüsü66,79 Kb.
#160658
  1   2   3   4
Mustaqil ish -8 Daraxtlarni Prufer usulida kodlash. Daraxtlarni ularning kodi bo\'yicha yasash.




MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI Qarshi FILIALI


Kompyuter Injiniring Fakulteti
2-kurs KI 11-20 gurux talabasi
MUSTAQIL ISH


Fan: Diskret tuzulmalar
Tayyorladi: Ergashov Maqsud


Qarshi-2021

Mavzu: Daraxtlarni Prufer usulida kodlash. Daraxtlarni ularning kodi bo'yicha yasash.

REJA:

  1. Binar daraxtlar haqida

  2. Daraxtlar ustida ba`zi amallar

  3. Daraxtlarni ularning kodi bo`yicha yasash

  4. Xulosa

  5. Foydalanilgan Adabiyotlar




  1. Daraxt - bu uning har bir tuguni nol yoki bir- necha bolaga ega bo‘lgan iyerarxik tuzilmadir. Daraxt tuzilmasi quyidagi ko‘rinishda bo‘lishi mumkin:


Bu daraxt oila tuzilmasini ifoda etmoqda. Daraxt tugunlari odamlarni ifodalamoqda, chiziqlar esa ular orasidagi bog‘lanishni. Bu turdagi maʼlumotlarni saqlash uchun daraxt tuzilmasi eng qulay tuzilma hisoblanadi.
Ikkilik (Binar) daraxt
Binar daraxt yuqorida ko‘rsatilgan daraxtga o‘xshaydi, lekin baʼzi qoidalarga asosan quriladi:

  • Har bir tugundagi bolalar soni 2 tadan oshmasligi zarur

  • Xar qanday tugun qiymatidan kichik bo‘lgan qiymat chap farzandga yoki chap farzandning chap farzandiga yoziladi

  • Xar qanday tugun qiymatidan katta bo‘lgan qiymat o‘ng farzandga yoki ong farzandning o‘ng farzandiga yoziladi

Keling shu qoidalar asosida qurilgan daraxtni ko‘raylik:

Ahamiyat bering, bosh tugun (8)dan chapdagi barcha elementlarning qiymatlari sakkizdan kichik undan o‘ngdagisi esa sakkizdan katta. Bu qoidalar daraxtning xar bir tuguniga tegishli.
Keling daraxt bo‘sh bo‘lgandan boshlab qanday qurilganini qarab chiqamiz. Birinchi navbatda 8 ni qo‘shamiz. Dastlab daraxt bo‘sh bo‘lgani sabab u bosh tugun hisoblanadi. Undan keyin 4 ni qo‘shamiz. 8 dan 4 kichik bo‘lgani uchun tepadagi qoidalarga amal qilgan xolda 4 ni 8 ning chap tomoniga yozamiz. 8 ning hech qanday farzandi bo‘lmagani uchun 4 shu joyda qoladi.
Endi 2 kiritamiz. Maʼlumki 2 dan 8 katta, shu sabab chapga yuramiz. Chapda allaqachon qiymat borligi sabab chap farzand qiymati 2 bilan solishtiriladi. Chap farzandning qiymati (4) 2 dan kata bo‘lgani sabab 4 ning chap tomoni qaraladi. 4 ning chap tomonida element bo‘lmagani sabab 2 shu joyga joylashtiriladi. Shunday qilib kiritilgan xar bir element uchun yuqoridagi solishtiruvlar qaytariladi.
Daraxtdan element olib tashlash
Daraxt elementini o‘chirish oddiy tuyulishi mumkin, lekin hisobga olish kerak bo‘lgan holatlari mavjud.
Algoritmning umumiy ko‘rinishi quyidagicha:

  • Qiymatga mos elementni topish

  • Uni o‘chirish

Biz berilgan qiymatga mos qiymatni topganimizdan keyin biz 3- xil holatga duch kelishimiz mumkin.
1 – Holat: O‘chirilishi lozim bo‘lgan elementning o‘ng farzandi mavjud emas.

Bu holatda biz, shunchaki chap farzandni o’chirilgan element o’rniga ko’chiramiz. Natijada yuqoridagi daraxt quyidagi ko’rinishga keladi:

2 – Holat: O’chirilishi lozim bo’lgan elementning faqat o’ng farzandi mavjud va o’z navbatida bu farzandning chap tomonida element mavjud emas.

Bu holatda o’chirilgan element o’rniga o’ng farzand (6) ko’chiriladi. Natijada daraxt quyidagi ko’rinishga keladi:

3 – Holat: O’chirilayotgan elementning o’ng farzandi mavjud va bu farzandning chap farzandi mavjud:

Bu holatda o‘chirilgan element o‘rinini eng chapdagi element egallaydi yaʼni 6. Bunga sabab element o‘chirilganda tuzilma o‘z xususiyatlarini saqlab qolishi zarur yaʼni tugunning chap tomonida undan kichik, o‘ng tomonida esa undan katta qiymat joylashishi kerak. Natija: 

Shunday qilib biz siz bilan binar daraxtdagi eng asosiy ikkita daraxt qurish va undan element o’chirish jarayonlarini o’rgandik.

  1. Qidiruv funksiyasini ko’rib chiqamiz. search fuksiyasi daraxtdan key kalitga mos elementning adresini aniqlaydi.

int search(node *tree, int key){
node *next; next=tree;
while(next!=NULL)
{ if (next->info==key){cout<<"Binar daraxtda "<
if (next->info>key) next=next->left;
else next=next->right;}cout<<"tuzilmada izlangan element yo’q!!!"<
return 0;}


Yüklə 66,79 Kb.

Dostları ilə paylaş:
  1   2   3   4




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə