4-amaliy mashg’ulot


p – ishchi ko‘rsatkich; q - p



Yüklə 77,83 Kb.
səhifə5/7
tarix18.12.2023
ölçüsü77,83 Kb.
#184044
1   2   3   4   5   6   7
4- amaliy mta

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).

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 "<
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
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ə 77,83 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7




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

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin