6-Laboratoriya ishi. Daraxtsimon ma’lumotlar tuzilmasini tadqiq qilish



Yüklə 124,4 Kb.
səhifə9/9
tarix24.12.2023
ölçüsü124,4 Kb.
#159607
1   2   3   4   5   6   7   8   9
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.

  • 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;
    }
    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 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;
    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



    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.



    1. Berilgan binar daraxtning balandligini aniqlash algoritmi va dasturini keltiring.

    2. Berilgan binar daraxtning har bir juft elementi balandligini aniqlash algoritmi va dasturini keltiring.

    3. Berilgan binar daraxtning terminal tugunlari balandliklarini aniqlash algoritmi va dasturini keltiring.

    4. Daraxt tugunlari haqiqiy sonlar bo’lsin. Daraxt barcha tugunlarini o’rta arifmetigiga teng qiymatli tugunni berilgan binar daraxtga kiritish algoritmi va dasturini keltiring.

    5. Berilgan binar daraxtning oraliq tugunlaridan tashkil topgan yangi binar daraxt tuzish algoritmi va dasturini keltiring.

    6. Berilgan binar daraxtdan kalitlari o’sish tartibida joylashgan bir bog’lamli ro’yhat hosil qilish algoritmi va dasturini keltiring.

    7. Binar daraxtning barcha barglari yozuvini chop etuvchi dastur ishlab chiqing.

    8. Binar daraxtning barcha oraliq tugunlari yozuvini chop etuvchi dastur ishlab chiqing.

    9. Binar daraxtning juft qiymatli kalitga ega elementlaridan yangi daraxt qurish algoritmi va dasturini keltiring.

    10. Binar daraxtning tugunlari sonini aniqlashning algoritmi va dasturini keltiring.

    11. Binar daraxtda berilgan tugungacha bo’lgan masofani aniqlashning algoritmi va dasturini keltiring.

    12. Bo’sh bo’lmagan binar daraxtning eng katta va eng kichik kalitli tugunlarini aniqlashning algoritmi va dasturini keltiring.

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

    14. Binar daraxtni o’ngdan chapga va chapdan o’ngga ko’rik o’tkazish dasturi va algoritmini keltiring.

    15. Daraxt tugunlari haqiqiy sonlar bo’lsin. Yozuvi (a,b) oraliqqa tegishli bo’lmagan daraxt tugunlarini o’chiruvchi dastur tuzing.




    1. Daraxt tugunlari haqiqiy sonlar bo’lsin. Yozuvi (a,b) oraliqqa tegishli bo’lgan daraxt tugunlarini o’chiruvchi dastur tuzing.

    2. Berilgan binar daraxtdan kalit qiymatlari kamayish tartibida joylashgan bir bog’lamli ro’yhat hosil qilish algoritmi va dasturini keltiring.

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

    4. Berilgan binar daraxtda kalit qiymati ildizning kalit qiymatiga eng yaqin bo’lgan tugun kaliti va yozuvini chop etish algoritmi va dasturini keltiring.

    5. Berilgan binar daraxtda kalit qiymati ildizning kalit qiymatiga eng uzoq bo’lgan tugun kaliti va yozuvini chop etish algoritmi va dasturini keltiring.

    6. Butun sonlardan iborat binar daraxtning toq qiymatli tugunlaridan yangi muvozanatlangan daraxt hosil qiling.

    7. Berilgan binar daraxt muvozanatlanganmi yoki yo’qligini tekshiring.

    8. Berilgan muvozanatlangan binar daraxtdan qaysi tugunlar o’chirilsa, uning muvozanatlanganligi buzilmasligini ko’rsatish dasturini tuzing.

    9. Berilgan ro’yhat binar daraxt bo’la oladimi, yo’qmi, shuni aniqlash dasturini keltiring.

    Yüklə 124,4 Kb.

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




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

        Ana səhifə