Return to Snippet

Revision: 68482
at January 19, 2015 05:16 by ivan_uzarevic


Initial Code
#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

Initial URL

                                

Initial Description
Zaglavlje sa funkcijama, izvedenih pomoću pokazivača, za rad sa binarnim stablom

Initial Title
bstablo_pokazivaci.h

Initial Tags
data, c++

Initial Language
C++