Kao prvo labeltype biras prema podacima koje zelis obradjivati i moze biti bili sto.
Za implementaciju binarnog stabla preko pointera u osnovi mozes koristit dva nacina prikazivanja cvora:
- prvi nacin je da u svakom cvoru biljezis neku oznaku (label) i cuvas pointere na lijevo i desno dijete, sto dakle izgleda ovako:
[code:1]
struct node_st{
labeltype label;
struct node_st* left;
struct node_st* right;
};
[/code:1]
- drugi nacin je da dodas i pointer na roditelja:
[code:1]
struct node_st{
labeltype label;
struct node_st* left;
struct node_st* right;
struct node_st* parent;
};
[/code:1]
Sada jos definiras:
[code:1]
typedef struct node_st* node;
typedef struct node_st* BTREE;
#define LAMBDA 0
[/code:1]
Dakle, ideja je da stablo poistovjecujes sa korjenom, a nepostojeci cvor sa null pointerom.
Koji od gornja dva pristupa ces koristiti ovisi o tome sto ti je potrebno, jer ce se neke stvari primjenom jedne implementacije znatno ubrzati ili usporiti. Ocit primjer je funkcija PARENT, a ako malo bolje pogledas i DELETE, jer za izbaciti neki list iz stabla prvo mu moras pronaci roditelja.
Dakle, ideja je da stablo poistovjecujes sa korjenom, a nepostojeci cvor sa null pointerom.
Koji od gornja dva pristupa ces koristiti ovisi o tome sto ti je potrebno, jer ce se neke stvari primjenom jedne implementacije znatno ubrzati ili usporiti. Ocit primjer je funkcija PARENT, a ako malo bolje pogledas i DELETE, jer za izbaciti neki list iz stabla prvo mu moras pronaci roditelja.
_________________
Extraordinary claims require extraordinary evidence. – Carl Sagan