• 5.11. Binar daraxtni muvozanatlanganmi yoki yo‘qligini tekshirish
  • GetFlag
  • 5-laboratoriya mashg‘uloti Daraxt ma'lumotlarini tuzilishini o'rganish




    Download 0,91 Mb.
    bet6/11
    Sana17.01.2024
    Hajmi0,91 Mb.
    #139331
    1   2   3   4   5   6   7   8   9   10   11
    Bog'liq
    5-laboratoriya mashg‘uloti Daraxt ma\'lumotlarini tuzilishini o\'r-fayllar.org
    1-topshiriq (2) (6), 2-Laboratoriyaga topshiriq (2) (3), 2, 2 laboratoriya isroilov, 1-topshiriq (4), MICROSOFT WORD, digital-transformation-google-cloud (2), MAMATQULOV MUXAMMADJON, O`zbekiston respublikasi oliy va o`rta maxsus ta’lim vazirligi n-fayllar.org, Elektrolitlar ta\'sirida bo\'ladigan koagulyatsiya-fayllar.org, 11-amaliy ish mavzu Tashkilot risklarini baholash va tahlil qil, 4-uzb-dateline, Axborot xavfsizligi, diskret
    5.10. Binar daraxt balandligi
    Binar daraxtning balandligi deb daraxt bosqichlari soniga aytiladi. Binar daraxt balandligini aniqlash uchun uning har bir tuguni chap va o‘ng qismdaraxtlari balandliklari solishtiriladi va maksimal qiymat balandlik deb olinadi. Misol uchun quyidagi 5.9-rasmdagi daraxtning balandligi 2 ga teng.



    5.9-rasm. Binar daraxt balandligi
    Daraxt balandligini aniqlash dastur kodini keltiramiz.

    int height(node *tree){

    int h1,h2;

    if (tree==NULL) return (-1);

    else {

    h1 = height(tree->left);

    h2 = height(tree->right);

    if (h1>h2) return (1 + h1);

    else return (1 + h2);

    }

    }



    5.11. Binar daraxtni muvozanatlanganmi yoki yo‘qligini tekshirish

    Daraxtning balandligini aniqlashni o‘rganganimizdan keyin uning muvoza-natlanganligini tekshirish mumkin. Binar daraxtning muvozanatlanganligini tekshirish uchun uning har bir tugunini har ikkala qismdaraxti balandliklarini hisoblab, farqlarini tekshirib ko‘rish kerak. Agar farq 0 yoki 1 ga teng bo‘lsa, bu muvozanatlangan daraxt hisoblanadi. Quyida binar daraxtni muvozanatlanganlikka tekshirishning rekursiv funksiyasini qo‘llovchi dastur keltirilgan.


    Dastur kodi

    #include

    #include

    using namespace std;

    class node{

    public: int info;

    node *left;

    node *right;

    };

    int k=0,Flag=1;



    int height(node *tree){

    int h1,h2;

    if (tree==NULL) return (-1);

    else {


    h1 = height(tree->left);

    h2 = height(tree->right);

    if (h1>h2) return (1 + h1);

    else return (1 + h2);

    }

    }

    void vizual(node *tree,int l)



    { int i;

    if(tree!=NULL) {

    vizual(tree->right,l+1);

    for (i=1; i<=l; i++) cout<<" ";

    cout

    vizual(tree->left,l+1);

    }

    }

    int AVLtree (node *tree){



    int t;

    if (tree!=NULL){

    t = height (tree->left) - height (tree->right);

    if ((t<-1) || (t>1)) { Flag = 0; return Flag; }

    AVLtree (tree->left); AVLtree (tree->right);

    }

    }



    int GetFlag(){return Flag;}

    int main()

    { int n,key,s; node *tree=NULL,*next=NULL;

    cout<<"n="; cin>>n; int arr[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<

    cout<<"\nbinar daraxt:\n";



    vizual(tree,0);

    AVLtree(tree);

    if(GetFlag()) cout<<"ha, muvozanatlangan daraxt"; else cout<<"yo‘q, muvozanatlanmagan daraxt";cout<

    getch();

    }


    Download 0,91 Mb.
    1   2   3   4   5   6   7   8   9   10   11




    Download 0,91 Mb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    5-laboratoriya mashg‘uloti Daraxt ma'lumotlarini tuzilishini o'rganish

    Download 0,91 Mb.