Ma’ruzalar. Binar daraxtlar Reja


return Daraxtga yangi element qo’shish prosedurasi


Download 62.91 Kb.
Pdf ko'rish
bet4/6
Sana23.11.2023
Hajmi62.91 Kb.
#1795890
1   2   3   4   5   6
Bog'liq
Tema16-17 (2)

return Daraxtga yangi element qo’shish prosedurasi 
Daraxtga biror bir elementni qo’shishdan oldin daraxtda berilgan kalit 
bo’yicha qidiruvni amalga oshirish lozim bo’ladi. Agar berilgan kalitga teng kalit 
mavjud bo’lsa, u holda dastur o’z ishini yakunlaydi, aks holda daraxtga element 
qo’shish amalga oshiriladi.
Daraxtga yangi yozuvni kiritish uchun, avvalo daraxtni shunday tugunini 
topish lozimki, natijada mazkur tugunga yangi element qo’shish mumkin bo’lsin. 
Kerakli tugunni qidirish algoritmi ham xuddi berilgan kalit bo’yicha tugunni 
topish algoritmi kabi bo’ladi. Biroq berilgan kalit bo’yicha qidiruv 
prosedurasidan to’g’ridan-to’g’ri (bevosita) foydalanib bo’lmaydi, sababi, qidiruv 
prosedurasida, qaysi tugunda murojaat NIL (search = nil) bo’lgani fiksirlanmaydi.
Qidiruv prosedurasini shunday modifikasiya qilamizki, qo’shimcha samara 
sifatida yangi proseduramiz berilgan kalit turgan tugunni fiksirlasin (qidiruv 
muvofaqiyatli bo’lsa), yoki shunday tugunniki, ushbu tugunni qayta ishlagandan 


keyin qidiruv yakunlansin (qidiruv muvofaqiyatli bo’lsa). 
Daraxtda qo’shilayotgan element kalitiga teng kalitli element yo’q bo’lgan holda 
elementni qo’shish prosedurasini keltirib o’tamiz. 
Node *q=NULL; 
Node *p=tree; 
while(p!=NULL){ 
q=p; 
if(key==p->key){ 
search=p; 
return 0; 

If(key
key) p=p->left; 

else p=p->right; 

{Berilgan kalitga teng tugun topilmadi, element qo’shish talab qilinadi. Ota 
bo’lishi mumkin tugunga q ko’rsatkich beriladi.} 
node *q=new node; 
Qo’yilayotgan yangi element chap yoki o’ng o’g’il bo’lishini aniqlash lozim. 
If(keykey) q->left=yangi; 
else q->right=yangi; 
search=yangi; 
return 0; 

Download 62.91 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6




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