Fizika-matematika fakulteti



Download 1,69 Mb.
bet10/27
Sana07.07.2021
Hajmi1,69 Mb.
#111627
1   ...   6   7   8   9   10   11   12   13   ...   27
Bog'liq
Qodirova Sevinch 18.06-guruh(kurs ishim)[1]

C# dagi dastur:

using System; 
using System.Collections.Generic;  
//Ch # balanssiz BST ni muvozanatli BSTga aylantirish uchun C # dasturi  
/* Ikkilik daraxti tugunida ma'lumotlar, chap bolaga ko'rsatgich va o'ng bolaga ko'rsatgich mavjud*/
public class Node 

    public int data
    public Node left, right
    public Node(int data) 
    { 
        this.data = data; 
        left = right = null
    } 
}
public class BinaryTree 

    public Node root
    public virtual void storeBSTNodes(Node root, List nodes) 
    { 
        if (root == null
        { 
            return; 
        } 
        storeBSTNodes(root.left, nodes); 
        nodes.Add(root); 
        storeBSTNodes(root.right, nodes); 
    } 
    /*Ikkilik daraxtni qurish uchun rekursiv funktsiya*/
    public virtual Node buildTreeUtil(List nodes, int start, int end) 
    { 
        if (start > end) 
        { 
            return null
        } 
        /*O'rta elementni ildiz qilib olish */
        int mid = (start + end) / 2; 
        Node node = nodes[mid]; 
          node.left = buildTreeUtil(nodes, start, mid - 1); 
        node.right = buildTreeUtil(nodes, mid + 1, end); 
        return node; 
    } 
    // Ushbu funktsiyalar muvozanatsiz BSTni muvozanatli BST ga o'zgartiradi  
    public virtual Node buildTree(Node root) 
    { 
        // Berilgan BST tugunlarini saralangan tartibda saqlash  
        List nodes = new List(); 
        storeBSTNodes(root, nodes); 
        //  BST uchun nodes[]  strukturasi
        int n = nodes.Count; 
        return buildTreeUtil(nodes, 0, n - 1); 
    }
    /* Daraxtni oldindan buyurtib o'tishni amalga oshirish funktsiyasi */
    public virtual void preOrder(Node node) 
    { 
        if (node == null
        { 
            return; 
        } 
        Console.Write(node.data + " "); 
        preOrder(node.left); 
        preOrder(node.right); 
    } 
    // Yuqoridagi funktsiyalarni sinab ko'rish dasturi  
    public static void Main(string[] args) 
    { 
         /* Qurilgan  ikkilik daraxti  
                10  
               /  
              8  
             /  
            7  
           /  
          6  
         /  
        5   */
        BinaryTree tree = new BinaryTree(); 
        tree.root = new Node(10); 
        tree.root.left = new Node(8); 
        tree.root.left.left = new Node(7); 
        tree.root.left.left.left = new Node(6); 
        tree.root.left.left.left.left = new Node(5);
        tree.root = tree.buildTree(tree.root); 
        Console.WriteLine("Muvozanatlashgan BST oldindan e'lon qilish:"); 
        tree.preOrder(tree.root);
        Console.ReadKey();
    } 


Natija:



2-§. Qizil-qora muvozanatlashgan daraxtlar.


Qizil-qora BSTlar, yuqorida tavsiflangan 2-3 daraxt uchun kiritish algoritmini tushunish qiyin emas; Endi buni amalga oshirish qiyin emasligini ko'ramiz. Tabiiy amalga oshirishga olib keladigan qizil-qora BST deb nomlanadigan oddiy tasvirni ko'rib chiqamiz: ko'p kod talab qilinmaydi, lekin kodni qanday va nima uchun bajarilishini tushunish diqqat bilan qarashni talab qiladi.

3-tugunlarni kodlash. Qizil-qora BSTlarning asosiy g'oyasi: odatiy BSTlardan (2 tugundan iborat) boshlab va 3-tugunlarni kodlash uchun qo'shimcha ma'lumot kiritish orqali 2-3 daraxtni kodlashdir. Bog'lanishlar ikki xil bo'lishi mumkin, deb o'ylaymiz: uchta tugunni ifodalash uchun ikkita 2 tugunni bir-biriga bog'laydigan qizil ulanishlar va 2-3 daraxtni bir-biriga bog'laydigan qora ulanishlar. Xususan, 3 ta tugunni chap tomonga suyanadigan bitta qizil ulanish orqali bog'langan ikkita 2 tugun sifatida ifodalaymiz (2 tugunning biri ikkinchisining chap bolasi). Bunday vakolatxonadan foydalanishning bir afzalligi shundaki, u bizning get () kodini BST-ning standart qidiruvida o'zgartirishlarsiz ishlatishga imkon beradi. Har qanday 2-3 daraxtni hisobga olsak, har bir tugunni belgilangan tartibda o'zgartirib, darhol tegishli BSTni olishimiz mumkin. Bu tarzda 2-3 ta daraxtni qizil-qora BST deb tasvirlaydigan BSTlarga murojaat qilamiz.

13-rasm. Chap tomonga burilgan qizil ulanish orqali ulangan ikkita 2 tugunli 3 tugunni kodlash.




Download 1,69 Mb.

Do'stlaringiz bilan baham:
1   ...   6   7   8   9   10   11   12   13   ...   27




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish