Return to Snippet

Revision: 68452
at January 19, 2015 02:08 by zeleee


Initial Code
#include <iostream>
using namespace std;

struct tbstablo{
	int oznaka;
	tbstablo *lc,*rc;
};
typedef tbstablo* cvor;
typedef cvor btree;


cvor parentB(cvor n, btree stablo){
	cvor parentL=NULL, parentR=NULL;
      if (stablo->lc == n || stablo->rc == n) //ako je lijevo dijete stabla ili desno dijete stabla jednako tom cvoru vrati adresu stabla
         return stablo;
      if (stablo->lc)  //u suprotnom ako postoji lijevo dijete trazi lijevo
         parentL = parentB(n, stablo->lc);
      if (stablo->rc) //ako postoji desno dijete trazi desno
         parentR = parentB(n, stablo->rc);
      if (parentL) //ako je razl. od NULL tada je roditelj nadjen kod lijevog dijeteta
         return parentL;
      if (parentR) //ako je razl. od NULL tada je roditelj nadjen kod desnog dijeteta
         return parentR;
      return NULL;  //inace vrati NULL(nije nadjen roditelj,tj. ne postoji roditelj) 		     
}

cvor leftchildB(cvor n,btree stablo){
 return n->lc;
}
cvor rightchildB(cvor n,btree stablo){
 return n->rc;	
}
int labelB(cvor n, btree stablo){
	return n->oznaka;
}
void changelabelB(int x, cvor n,btree stablo){
	n->oznaka=x;
}
cvor rootB(btree stablo){
	return stablo;
}
void createleftB(int x,cvor n,btree stablo){
	if(n->lc)
		cout<<"Cvor je zauzet!"<<endl;	
	else{
	cvor novi=new tbstablo;
	n->lc=novi;
	novi->lc=NULL;
	novi->rc=NULL;
	novi->oznaka=x;
	}
}
void createrightB(int x,cvor n,btree stablo){
	if(n->rc)
		cout<<"Cvor je zauzet!"<<endl;	
	else{
	cvor novi=new tbstablo;
	n->rc=novi;
	novi->lc=NULL;
	novi->rc=NULL;
	novi->oznaka=x;
	}
}
void deleteB (cvor n,btree stablo) {
      if (n->lc)
         deleteB(n->lc, stablo);
      if (n->rc)
         deleteB(n->rc, stablo);
      if (n != rootB(stablo) && leftchildB(parentB(n, stablo),stablo)==n)
         parentB(n, stablo)->lc = NULL;
      else if (n != rootB(stablo))
           parentB(n, stablo)->rc = NULL;
      cout << "Izbrisan cvor " << n->oznaka << "." << endl;
      cout<< "Adresa lijevog dijeteta dvora:"<<n->lc<<endl;
      cout<< "Adresa desnog dijeteta cvora:"<<n->rc<<endl;
      delete n;    
}

void initB(int x,btree stablo){
    stablo->lc = stablo->rc = NULL;
    stablo->oznaka = x;
    }

Initial URL


Initial Description
4

Initial Title
Binarno stablo pokazivaci

Initial Tags


Initial Language
C++