/ Published in: C++
Zaglavlje sa funkcijama, izvedenih pomoću pokazivaÄa, za rad sa binarnim stablom
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#ifndef bstablo_polje #define bstablo_polje #include <iostream> using namespace std; struct bstablo { int labela; bstablo *lijevo, *desno; }; typedef bstablo *vrijed; bstablo *stablo = new bstablo; vrijed parentB (vrijed poz, bstablo *stablo) { static bstablo *prvi = NULL; static bstablo *drugi = NULL; if (stablo->lijevo == poz || stablo->desno == poz) return stablo; if (stablo->lijevo != NULL) prvi = parentB (poz, stablo->lijevo); if (stablo->desno != NULL) drugi = parentB (poz,stablo->desno); if (prvi != NULL) return prvi; if (drugi != NULL) return drugi; return NULL; } vrijed leftchildB(vrijed poz, bstablo *stablo) { return poz->lijevo; } vrijed rightchildB(vrijed poz, bstablo *stablo) { return poz->desno; } int labelB (vrijed poz, vrijed stablo) { if (poz != NULL) return poz->labela; } void changelabelB(int x, vrijed poz, bstablo *stablo) { if (poz != NULL) poz->labela = x; } vrijed rootB (bstablo *stablo) { return stablo; } void createleftB (int x, vrijed poz, bstablo *stablo) { if (poz->lijevo != NULL) { cout << "Lijevo dijete vec postoji" << endl; return; } if (poz == NULL) { cout << "Cvor kojem zelite dodati dijete ne postoji" << endl; return; } poz->lijevo = new bstablo; poz->lijevo->labela = x; poz->lijevo->lijevo = NULL; poz->lijevo->desno = NULL; } void createrightB (int x, vrijed poz, bstablo *stablo) { if (poz->desno) { cout << "Desno dijete vec postoji" << endl; return; } if (poz == NULL) { cout << "Cvor kojem zelite dodati dijete ne postoji" << endl; return; } poz->desno = new bstablo; poz->desno->labela = x; poz->desno->lijevo = NULL; poz->desno->desno = NULL; } void deleteB (vrijed poz, bstablo *stablo) { bstablo *roditelj = parentB (poz, stablo); if (roditelj->lijevo == poz) roditelj->lijevo = NULL; else roditelj->desno = NULL; if (poz->lijevo) deleteB (poz->lijevo, stablo); if (poz->desno) deleteB (poz->desno, stablo); delete poz; }; void initB (int x, bstablo *stablo) { stablo->lijevo = NULL; stablo->desno = NULL; stablo->labela = x; } int provjera (vrijed poz) { if (poz != NULL) return 1; else return 0; } #endif