72
Daraxtga yangi yozuvni kiritish uchun, avvalo daraxtning 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.
Daraxtda qo‟shilayotgan element kalitiga teng kalitli element yo‟q bo‟lgan
holda elementni tuzilmaga qo‟shish funksiyasini 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, elementning o‟zi esa
yangi
nomli
ko‟rsatkichi bilan 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;
4.8. Binar daraxtdan elementni o
‟
chirish funksiyasi
Tugunni o‟chirib tashlash natijasida daraxtning tartiblanganligi buzilmasligi
lozim.
73
Tugun daraxtda o‟chirilayotganda 3 xil variant bo‟lishi mumkin:
1) Topilgan tugun terminal (barg). Bu holatda
tugun otasining qaysi
tomonida turgan bo‟lsa, otasining o‟sha tomonidagi shoxi o‟chiriladi va tugunning
xotirada joylashgan sohasi tozalanadi.
2) Topilgan tugun faqatgina bitta o‟g‟ilga ega. U holda o‟g‟il ota o‟rniga
joylashtiriladi.
3) O‟chirilayotgan tugun ikkita o‟g‟ilga ega. Bunday holatda shunday qism
daraxtlar
zvenosini topish lozimki, uni o‟chirilayotgan tugun o‟rniga qo‟yish
mumkin bo‟lsin. Bunday zveno har doim mavjud bo‟ladi:
- bu yoki chap qism daraxtning eng o‟ng tomondagi elementi (ushbu
zvenoga erishish uchun keyingi uchiga chap shox orqali o‟tib, navbatdagi uchlariga
esa,
murojaat
NULL
bo‟lmaguncha, faqatgina o‟ng shoxlari orqali o‟tish zarur);
- yoki o‟ng qism daraxtning eng chap elementi (ushbu
zvenoga erishish
uchun keyingi uchiga o‟ng shox orqali o‟tib,
navbatdagi uchlariga esa, murojaat
NULL
bo‟lmaguncha, faqatgina chap shoxlari orqali o‟tish zarur).
O‟chirlayotgan element chap qism daraxtining eng o‟ngidagi element
o‟chirilayotgan element uchun merosxo‟r bo‟ladi ( 12 uchun – 11 bo‟ladi).
Merosxo‟r esa o‟ng qism daraxtning eng chapidagi tuguni (12 uchun - 13).
Merosxo‟rni topish algoritmini ishlab chiqaylik (4.8-rasmga qarang).
Dostları ilə paylaş: