Binarny vyhladanaci strom

Programovacie jazyky, rady, poradňa...
beluský
Darca
Darca
Používateľov profilový obrázok
Príspevky: 317
Registrovaný: 21 sep 2006, 13:46

Binarny vyhladanaci strom

Príspevok od používateľa beluský »

Cawte,
nakodil som vkladanie do BVS a teraz mam spravit funkciu ktora zisti abecedne poradie daneho vrcholu...
vrchol v BVS je takejto struktury

Kód: Vybrať všetko

struct Node {
  char* string;
  int cLeft; // pocet vrcholov vlavo
  int cRight; // pocet vrcholov vpravo
  struct Node* parent; // rodic
  struct Node* left; // Lchild
  struct Node* right; // Rchild
}
a teraz potrebujem zistit pre hocijaky vrchol stromu kolky je v abecednom poradi podla char* string....
cize ak mam BVS a mam v nom vlozene prvky v takomto poradi....

Kód: Vybrať všetko

n d u a c z
tak

Kód: Vybrať všetko

int getPoradie(Node* nejakehovrcholu);

pre vsetky vrcholy by mi malo vratit:

Kód: Vybrať všetko

n 4
d 3
u 5
a 1
c 2
z 6
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

akoze ked si dokazal spravit vkladanie tak by si mohol vediet aj toto ... jednoducha prechod stromom rekurziou...

dufam ze som to dakde nezrmrvil (ide o princip .. nechcelo sa mi studovat presne tvoju implementaciu)

Kód: Vybrať všetko

zistiPoradie(Node* aktualny, Node* referencia, int &poradie)
{
    if(aktualny->left) zistiPoradie(aktualny->left, referencia, poradie);
    poradie++;
    if(aktualny!=referencia){
      if(aktualny->right) zistiPoradie(aktualny->right, referencia, poradie);
    }
}

int getPoradie(Node* nejakehovrcholu)
{
  int poradie=0;
  Node* aktualny=root();
  
  zistiPoradie(aktualny, nejakehovrcholu, poradie);

  return poradie;
}
Napísať odpoveď