İ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