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


v tugunning farzandi (agar u mavjud bo‟lsa) v



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

v tugunning farzandi (agar u mavjud bo‟lsa) v ning otasi bo‟lmish t ga meros 
qoldiriladi, ya‟ni v->right v ning o‟rniga keladi. t->left=v->right. Endigi ish p ning 
har ikkala tomonidagi tugunlarni v ga o‟zlashtiramiz. 
8. Agar t p ga teng bo‟lsa (ya‟ni p o‟chayotgan tugunning o‟rniga o‟zining


88 
farzandi kelayotgan bo‟lsa), p ning chapidagi tugunni v ning chapiga 
o‟zlashtiramiz.
9. Mana p tugunning o‟rniga v tugun keldi. Endigi vazifa v ni p ning otasi 
bilan ulash kerak. Buning uchun aniqlash kerak – p tugunning otasi q NULL ga 
teng emasmi? Agar q NULL bo‟lsa, biz daraxt ildizini o‟chirgan bo‟lamiz. Bu 
holda daraxt ildizi ko‟rsatkichi tree ni v ga tenglab qo‟yamiz. Aks holda, 10-
qadamga o‟tamiz. 
10. p tugun otasi q tugunning qaysi tomonida turgan edi? Agar p q ning 
chapida turgan bo‟lsa, p ning o‟rniga, ya‟ni q->left ga v ni joylaymiz, aks holda q-
>right ga v ni joylaymiz. 
11. 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<info<<"--chapida=>"<"<
intrave(tree->left); 
intrave(tree->right); }
return 0; 



89 
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"<
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 yoq!!!"<
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; 


90 
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); 


91 
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 


92 
16—chapida=>0 o’ngida=>0 
 
Nazorat savollari 
 
1. Daraxtsimon ma‟lumotlar tuzilmasi nima? 
2. Binar daraxt tuzilmasi nima va uni tuzishga misol keltiring? 
3. Binar daraxti tuzilmasi ustida qanday amallar bajatirilishi mumkin? 
4. Binar daraxtini ko‟rikdan o‟tkazish algoritmi qanday? 
5. Binar daraxtiga yangi element qo‟shish algoritmini tushuntiring. 
6. Binar daraxti elementini o‟chirish algoritmini tushuntiring. 
 
Topshiriq 
Variantlar: 
1. Talabalar ismlari ketma-ketligidan binar daraxt hosil qilish algoritmi va 
dasturini tuzing. 
2. Berilgan binar daraxtning terminal tugunlaridan tashkil topgan yangi 
muvozanatlangan binar daraxt hosil qilish algoritmi va dasturini tuzing. 
3. Berilgan binar daraxtning har bir tuguni chap tomoni tugunlaridan tashkil 
topgan muvozanatlangan binar daraxt hosil qilish algoritmi va dasturini tuzing. 
4. Daraxt tugunlari haqiqiy sonlar bo‟lsin. Daraxt barcha tugunlarini o‟rta 
arifmetigini hisoblash algoritmi va dasturini keltiring. 
5. Daraxt tugunlari haqiqiy sonlar bo‟lsin. Yozuvi manfiy bo‟lgan daraxt 
tugunlarini o‟chiruvchi dastur tuzing. 
6. Daraxt tugunlari haqiqiy sonlar bo‟lsin. Yozuvi berilgan kalit qiymatidan 
katta bo‟lgan daraxt tugunlarini o‟chiruvchi dastur tuzing. 
7. Berilgan binar daraxtning balandligini aniqlash algoritmi va dasturini 
keltiring. 
8. Berilgan binar daraxtning har bir juft elementi balandligini aniqlash 
algoritmi va dasturini keltiring. 


93 
9. Berilgan binar daraxtning terminal tugunlari balandliklarini aniqlash 
algoritmi va dasturini keltiring. 
10. Daraxt tugunlari haqiqiy sonlar bo‟lsin. Daraxt barcha tugunlarini o‟rta 
arifmetigiga teng qiymatli tugunni berilgan binar daraxtga kiritish algoritmi va 
dasturini keltiring. 
11. Berilgan binar daraxtning oraliq tugunlaridan tashkil topgan yangi binar 
daraxt tuzish algoritmi va dasturini keltiring. 
12. Berilgan binar daraxtdan kalitlari o‟sish tartibida joylashgan bir 
bog‟lamli ro‟yhat hosil qilish algoritmi va dasturini keltiring. 
13. Binar daraxtning barcha barglari yozuvini chop etuvchi dastur ishlab 
chiqing. 
14. Binar daraxtning barcha oraliq tugunlari yozuvini chop etuvchi dastur 
ishlab chiqing. 
15. Binar daraxtning juft qiymatli kalitga ega elementlaridan yangi daraxt 
qurish algoritmi va dasturini keltiring. 
16. Binar daraxtning tugunlari sonini aniqlashning algoritmi va dasturini 
keltiring. 
17. Binar daraxtda berilgan tugungacha bo‟lgan masofani aniqlashning 
algoritmi va dasturini keltiring. 
18. Bo‟sh bo‟lmagan binar daraxtning eng katta va eng kichik kalitli 
tugunlarini aniqlashning algoritmi va dasturini keltiring.
19. T1 va T2 binar daraxtlar tengligini tekshiruvchi dastur tuzing. (Daraxtlar 
teng deyiladi, agar ikkala daraxt mos uchlarining yozuv va kalitlari o‟zaro teng 
bo‟lsa). 
20. Binar daraxtni o‟ngdan chapga va chapdan o‟ngga ko‟rik o‟tkazish 
dasturi va algoritmini keltiring. 
21. Daraxt tugunlari haqiqiy sonlar bo‟lsin. Yozuvi (a,b) oraliqqa tegishli 
bo‟lmagan daraxt tugunlarini o‟chiruvchi dastur tuzing. 


94 
22. Daraxt tugunlari haqiqiy sonlar bo‟lsin. Yozuvi (a,b) oraliqqa tegishli 
bo‟lgan daraxt tugunlarini o‟chiruvchi dastur tuzing. 
23. Berilgan binar daraxtdan kalit qiymatlari kamayish tartibida joylashgan 
bir bog‟lamli ro‟yhat hosil qilish algoritmi va dasturini keltiring. 
24. Bo‟sh bo‟lmagan binar daraxtning eng katta va eng kichik kalitli 
tugunlarini o‟rta arifmetigiga teng kalitli tugunni berilgan daraxtga qo‟yish 
algoritmi va dasturini keltiring.
25. Berilgan binar daraxtda kalit qiymati ildizning kalit qiymatiga eng yaqin 
bo‟lgan tugun kaliti va yozuvini chop etish algoritmi va dasturini keltiring. 
26. Berilgan binar daraxtda kalit qiymati ildizning kalit qiymatiga eng uzoq 
bo‟lgan tugun kaliti va yozuvini chop etish algoritmi va dasturini keltiring. 
27. Butun sonlardan iborat binar daraxtning toq qiymatli tugunlaridan yangi 
muvozanatlangan daraxt hosil qiling. 
28. Berilgan binar daraxt muvozanatlanganmi yoki yo‟qligini tekshiring. 
29. Berilgan muvozanatlangan binar daraxtdan qaysi tugunlar o‟chirilsa, 
uning muvozanatlanganligi buzilmasligini ko‟rsatish dasturini tuzing. 
30. Berilgan ro‟yhat binar daraxt bo‟la oladimi, yo‟qmi, shuni aniqlash 
dasturini keltiring.


95 

Yüklə 1,33 Mb.

Dostları ilə paylaş:
1   ...   30   31   32   33   34   35   36   37   ...   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