- Kayıt
- 22 Nisan 2007
- Mesajlar
- 1.361
- Beğeniler
- 0
Buyrun Kodu
Kod:
#include <iostream>
using namespace std;
////////////////////////////////////////////////
class Dugum{
char merkez;
Dugum *sag, *sol;
public:
Dugum();
Dugum(char);
char Merkez();
Dugum *SolCocuk();
Dugum *SagCocuk();
void Merkez(char);
void SolAyarla(Dugum *);
void SagAyarla(Dugum *);
};
Dugum::Dugum(){ // dugum olustur (constructor)
merkez = 0;
sol = NULL;
sag = NULL;
}
Dugum::Dugum(char c){ // dugum olustur (constructor)
merkez = c;
sol = NULL;
sag = NULL;
}
char Dugum::Merkez(){ // dugumdeki degeri oku
return merkez;
}
Dugum* Dugum::SolCocuk(){ // sol cocugun adresini dondur
return sol;
}
Dugum* Dugum::SagCocuk(){ // sag cocugun adresini dondur
return sag;
}
void Dugum::Merkez(char c){ // dugumdeki degeri ayarla
merkez = c;
}
void Dugum::SolAyarla(Dugum *gir){ // sol cocugu ayarla
sol = gir;
}
void Dugum::SagAyarla(Dugum *gir){ // sag cocugu ayarla
sag = gir;
}
////////////////////////////////////////////////
class Agac{
Dugum *bas;
void SolGoster(Dugum *);
void OrtaGoster(Dugum *);
public:
Agac();
void Ayarla(Dugum *);
Dugum *Bas();
void SoldanTara();
void OrtadanTara();
};
Agac::Agac(){ // baslangic durumu
bas = NULL;
}
void Agac::SolGoster(Dugum *gir){ // INORDER (sol, orta, sag)
if(gir == NULL)
return;
SolGoster(gir->SolCocuk());
cout << gir->Merkez() << " ";
SolGoster(gir->SagCocuk());
}
void Agac::OrtaGoster(Dugum *gir){ // PREORDER (orta, sol, sag)
if(gir == NULL)
return;
cout << gir->Merkez() << " ";
OrtaGoster(gir->SolCocuk());
OrtaGoster(gir->SagCocuk());
}
void Agac::Ayarla(Dugum *gir){ // ilk dugum ayarlanir
bas = gir;
}
Dugum* Agac::Bas(){ // bas dugumu dondurur
return bas;
}
void Agac::SoldanTara(){ // INORDER (sol, orta, sag)
SolGoster(bas);
}
void Agac::OrtadanTara(){ // PREORDER (orta, sol, sag)
OrtaGoster(bas);
}
////////////////////////////////////////////////
int main(void){
Agac agac;
Dugum *yedek, *yeni;
// Agac -----> 0
yedek = new Dugum();
yedek->Merkez('A');
agac.Ayarla(yedek);
// Agac -----> A <-- yedek
yeni = new Dugum('B');
yedek->SolAyarla(yeni);
// Agac -----> A
// / \
// B
yeni = new Dugum('C');
yedek->SagAyarla(yeni);
// Agac -----> A
// / \
// B C
yedek = yedek->SolCocuk();
// Agac -----> A
// / \
// yedek --> B C
yeni = new Dugum('D');
yedek->SolAyarla(yeni);
// Agac -----> A
// / \
// B C
// / \
// D
yeni = new Dugum('E');
yedek->SagAyarla(yeni);
// Agac -----> A
// / \
// B C
// / \
// D E
yedek = agac.Bas()->SagCocuk();
// Agac -----> A
// / \
// B C <-- yedek
// / \
// D E
yeni = new Dugum('F');
yedek->SolAyarla(yeni);
// Agac -----> A
// / \
// B C
// / \ / \
// D E F
yeni = new Dugum('G');
yedek->SagAyarla(yeni);
// Agac -----> A
// / \
// B C
// / \ / \
// D E F G
cout << "Soldan (inorder) : ";
agac.SoldanTara();
cout << endl << "-----------------------------------" << endl;
cout << "Ortadan (preorder) : ";
agac.OrtadanTara();
cout << endl << endl;
system("PAUSE");
return 1;
}