Sebuah tree didefinisikan sebagai struktur y ang dibentuk secara recursive oleh kedua rule berikut:
1.Sebuah node adalah sebuah tree. Node satu-satunya pada tree ini berfungsi sebagai root maupun leaf.
2.Dari k buah tree T1~Tk , dan masing-masing memiliki root n1~nk.Jika node n adalah parent dari noden1~nk, akan diperoleh sebuah tree baru T yang memiliki root n. Dalam kondisi ini, tree T1~Tkmenjadi sub-tree dari tree T. Root dari sub-tree n1~nkadalah child dari node n .
@ Contoh Program Tree
#include "iostream.h"
#include "string.h"
#include "conio.h"
struct simpulpohon{
simpulpohon *induk;
simpulpohon *kiri;
simpulpohon *kanan;
char data;};
class pohonbiner{
private:
simpulpohon *akar;
int tambah(simpulpohon *orangtua, simpulpohon *baru);
void tampil(simpulpohon *simpul);
public:
pohonbiner();
int tambah(char data);
void tampil();
};
void main()
{
clrscr();
char data[] = "CARKDUPBENXZS";
pohonbiner pohon;
for (int i = 0; i < strlen(data); i++)
pohon.tambah(data[i]);
cout<<"Data ke Pohon Biner : "<
simpul->kanan = NULL;
simpul->induk = NULL;
simpul->data = data;
if (akar == NULL) {
akar = simpul;
return(1);
}
else return(tambah(akar,simpul));
}
int pohonbiner::tambah(simpulpohon *orangtua, simpulpohon *baru)
{
if (baru->data ==orangtua->data)
{
delete baru; return(0);
}
else if (baru->data <>data)
{
if (!orangtua->kiri)
{
orangtua->kiri = baru;
baru->induk = orangtua;
}
else return(tambah(orangtua->kiri,baru));
}
else
{
if (!orangtua->kanan)
{
orangtua->kanan = baru;
baru->induk = orangtua;
}
else return(tambah(orangtua->kanan,baru));
}
return(1);}
void pohonbiner::tampil()
{
tampil(akar); cout<
cout<
if (simpul->kanan) tampil(simpul->kanan); }
}