2 Kasım 2015 Pazartesi

İkili Arama Ağacı

İkili arma ağacı oluşturarak girdiğimiz veriler içerisinden en küçük olan elemanı bulmayı sağlayan bir uygulama.
örneğin 17 -18-19-20-21-22-23 elemanları için kök düğüm 20 olarak belirleyelim sonrasında eklenen düğüm kökten küçük ise sola büyük ise sağa yerleşir.
#include "stdafx.h"
#include 
using namespace std;

class BSTDugum {

public:
    int Veri;
    BSTDugum *pSol;    // Her düğümün veri ve sağ sol çocuklarının adresleri olmak üzere 3 alanı var.
    BSTDugum *pSag;
    BSTDugum(int Veri){ // Yapıcı fonksiyon düğüm oluştugunda sağ ve sol adresleri bos olan ilk dugumu olusturdu
        pSag = NULL; pSol = NULL;
        this->Veri = Veri;
    }
        //////
    void ekle(int item){ // agaca eleman ekleme bu kısımda yapılır. Düğümle eklenen eleman karşılastırılır ve sonuc olarak sağ ya da sol cocuk olarak eklenir
    
        if (Veri > item){
            if (pSol)
                return pSol->ekle(item);
            else{
                BSTDugum *pYeni = new BSTDugum(item);
                pSol=pYeni;
            
            }
            
        }
        else if (Veri < item){
            if (pSag)
                return pSag->ekle(item);
            else{
                BSTDugum *pYeni = new BSTDugum(item);
                pSag = pYeni;

            }
        
        }
 
 BSTDugum *ara(int item){ // girilen eleman aranır ve listede olup olmadığı kontrol edilir.
        if (Veri > item){
            return pSol->ara(item);


            return NULL;
        }

        else if (Veri < item) {
            if (pSag)
                return pSag->ara(item);
            else
                return NULL;
        }
        return this;
    }
    ////
    int Mingetir(){ // en soldaki eleman getirilir
        if (pSol){
            return pSol->Mingetir();
            
            
        }
        return Veri;
    }
    ////
    void listele(BSTDugum *node) { // agac yapısına girilen elemanlar listelenir
        if (node != NULL){
            listele(node->pSol);
            cout << node->Veri << endl;
            listele(node->pSag);

        }
    }

};

int _tmain(int argc, _TCHAR* argv[])
{
    
    BSTDugum *yeni = new BSTDugum(20);
    for (int i = 0; i < 6; i++){
        
        int a;
        cin >> a;
        yeni->ekle(a);
    
    }
    
    yeni->listele(yeni);
    cout << endl << endl;
    cout<Mingetir();
    
    

    system("pause");
    return 0;
}

Hiç yorum yok:

Yorum Gönder