p – ishchi ko‘rsatkich;
q - p dan bir qadam orqadagi ko‘rsatkich;
v – o‘chirilayotgan tugun merosxo‘rini ko‘rsatadi;
t – vdan 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; }