|
Mustaqil ish fan: Diskret tuzulmalar Tayyorladi: Ergashov Maqsud Qarshi-2021 Mavzu
|
səhifə | 1/4 | tarix | 24.12.2023 | ölçüsü | 66,79 Kb. | | #160658 |
| 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:
Binar daraxtlar haqida
Daraxtlar ustida ba`zi amallar
Daraxtlarni ularning kodi bo`yicha yasash
Xulosa
Foydalanilgan Adabiyotlar
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.
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;}
Dostları ilə paylaş: |
|
|