p tugun joylashgan xotira yacheykasini tozalab qo’yamiz va algoritm yakunlanadi.
Dastur kodi
#include
#include
using namespace std;
class node{
public: int info;
node *left;
node *right;
};
int intrave(node *tree){
if (tree!=NULL){int a=0, b=0;
if (tree->left!=NULL){ a=tree->left->info; }
if (tree->right!=NULL){ b=tree->right->info; }
cout"<"<
intrave(tree->left);
intrave(tree->right); }
return 0;
}
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 "<
p=next;break; }
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
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;
}
int main()
{ int n,key,s; node *tree=NULL,*next=NULL;
cout<<"n="; cin>>n;
for(int i=0; i
node *p=new node;
node *last=new node;
cin>>s;
p->info=s;
p->left=NULL;
p->right=NULL;
if(i==0){tree=p; next=tree; continue; }
next=tree;
while(1)
{ last=next;
if(p->infoinfo)next=next->left;
else next=next->right;
if(next==NULL)break; }
if(p->infoinfo)last->left=p;
else last->right=p;}
cout<
intrave(tree);
cout<<"delete qilinadigan elementni kiriting \n";
cout<<"key="; cin>>key;
tree=del(tree,key);
intrave(tree);
getch();
}
Dasturning ishlashi natijasi
n=10
8 3 9 12 10 15 13 11 16 14
8—chapida=>3 o’ngida=>9
3—chapida=>0 o’ngida=>0
9—chapida=>0 o’ngida=>12
12—chapida=>10 o’ngida=>15
10—chapida=>0 o’ngida=>11
11—chapida=>0 o‘ngida=>0
15—chapida=>13 o’ngida=>16
13—chapida=>0 o’ngida=>14
14—chapida=>0 o’ngida=>0
16—chapida=>0 o’ngida=>0
delete qilinadigan elementni kiriting
key=12
Binar daraxtda 12 Mavjud
8—chapida=>3 o’ngida=>9
3—chapida=>0 o’ngida=>0
9—chapida=>0 o’ngida=>13
13—chapida=>10 o’ngida=>15
10—chapida=>0 o’ngida=>11
11—chapida=>0 o’ngida=>0
15—chapida=>14 o’ngida=>16
14—chapida=>0 o’ngida=>0
16—chapida=>0 o’ngida=>0
Nazorat savollari
Daraxtsimon ma’lumotlar tuzilmasi nima?
Binar daraxt tuzilmasi nima va uni tuzishga misol keltiring?
Binar daraxti tuzilmasi ustida qanday amallar bajatirilishi mumkin?
Binar daraxtini ko’rikdan o’tkazish algoritmi qanday?
Binar daraxtiga yangi element qo’shish algoritmini tushuntiring.
Binar daraxti elementini o’chirish algoritmini tushuntiring.
Topshiriq
Variantlar:
Talabalar ismlari ketma-ketligidan binar daraxt hosil qilish algoritmi va dasturini tuzing.
Berilgan binar daraxtning terminal tugunlaridan tashkil topgan yangi muvozanatlangan binar daraxt hosil qilish algoritmi va dasturini tuzing.
Berilgan binar daraxtning har bir tuguni chap tomoni tugunlaridan tashkil topgan muvozanatlangan binar daraxt hosil qilish algoritmi va dasturini tuzing.
Daraxt tugunlari haqiqiy sonlar bo’lsin. Daraxt barcha tugunlarini o’rta arifmetigini hisoblash algoritmi va dasturini keltiring.
Daraxt tugunlari haqiqiy sonlar bo’lsin. Yozuvi manfiy bo’lgan daraxt tugunlarini o’chiruvchi dastur tuzing.
Daraxt tugunlari haqiqiy sonlar bo’lsin. Yozuvi berilgan kalit qiymatidan katta bo’lgan daraxt tugunlarini o’chiruvchi dastur tuzing.
Berilgan binar daraxtning balandligini aniqlash algoritmi va dasturini keltiring.
Berilgan binar daraxtning har bir juft elementi balandligini aniqlash algoritmi va dasturini keltiring.
Berilgan binar daraxtning terminal tugunlari balandliklarini aniqlash algoritmi va dasturini keltiring.
Daraxt tugunlari haqiqiy sonlar bo’lsin. Daraxt barcha tugunlarini o’rta arifmetigiga teng qiymatli tugunni berilgan binar daraxtga kiritish algoritmi va dasturini keltiring.
Dostları ilə paylaş: |