“Dasturiy injiniring” fakulteti “MA‟lumotlar tuzilmasi va algoritmlar”



Yüklə 1,33 Mb.
Pdf görüntüsü
səhifə30/49
tarix08.11.2022
ölçüsü1,33 Mb.
#67920
1   ...   26   27   28   29   30   31   32   33   ...   49
Malumotlar-tuzilmasi-va-algoritmlar-asosida-nazariy-bilimlarini-hamda

 
4.8. Binar daraxtdan elementni ochirish 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). 
p – ishchi ko‟rsatkich; 
q - p dan bir qadam orqadagi ko‟rsatkich; 
v – o‟chirilayotgan tugun merosxo‟rini ko‟rsatadi; 
t – v dan bir qadam orqada yuradi; 
s - v dan bir qadam oldinda yuradi (chap o‟g‟ilni yoki bo‟sh joyni ko‟rsatib 
boradi). 


74 
4.8-rasm. Binar daraxtdan oraliq tugunni o‟chirich tartibi 
Yuqoridagi daraxt bo‟yicha qaraydigan bo‟lsak, oxir oqibatda, v ko‟rsatkich 
13 tugunni, s esa bo‟sh joyni ko‟rsatishi lozim. 
1) Elementni qidirish funksiyasi orqali o‟chirilayotgan elementni topamiz. p 
ko‟rsatkich o‟chirilayotgan elementni ko‟rsatadi. 
2) O‟chiriladigan elementning o‟rniga qo‟yiluvchi tugunga v ko‟rsatkich 
qo‟yamiz. 
node *del(node *tree,int key){ 
node *p=new node; 
node *next=tree; 
node *q=NULL; 
while(next!=NULL) 

 
 
if 
(next->info==key){cout<<"Binar 
daraxtda 
"<
Mavjud"<
if (next->info>key){ q=next; next=next->left; } 
else {q=next;next=next->right;}
}
if(next==NULL) cout<<"tuzilmada izlangan element yo’q!!!"<
node *v=NULL,*t=NULL,*s=NULL; 
if(p->left==NULL)v=p->right; 
else


75 
if(p->right==NULL) v=p->left; 
if((p->left!=NULL)&&(p->right!=NULL)){t=p; v=p->right; s=v->left;} 
while(s!=NULL){ 
t=v; 
v=s; 
s=v->left; 

if((t!=NULL)&&(t!=p)){ 
t->left=v->right; 
v->right=p->right; 
v->left=p->left; 

if(t==p) v->left=p->left; 
if(q==NULL){ 
cout<info<<" ildiz\n"; 
tree=v; 
delete(p); 
return tree; 

if(p==q->left) 
q->left=v; 
else q->right=v; 
delete(p); // o’chirilgan element joylashgan xotira yacheykasini tozalash 
return tree; 


Yüklə 1,33 Mb.

Dostları ilə paylaş:
1   ...   26   27   28   29   30   31   32   33   ...   49




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

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin