Return to Snippet

Revision: 68489
at January 19, 2015 05:27 by mateom11


Initial Code
#include <iostream>
 
using namespace std;
 
struct bt {
	int label;
	bt *left,*right;
};
 
typedef  bt *node;
typedef bt* btree;
 
void InitB(int x, btree T){
	T->left=NULL;
	T->right=NULL;
	T->label=x;
}
 
node RootB(btree T){
	return T;
} 
 
int LabelB(node n,btree T){
	return n->label;
}
void ChangeLabelB(int x,node n, btree T){
	n->label=x;
}
 
node ParentB(node n,btree T){
	node parentL=NULL,parentR=NULL;
	if(T->left==n || T->right ==n) return T;
	if(T->left) parentL=ParentB(n,T->left);
	if(T->right) parentR=ParentB(n,T->right);
	if (parentL) return parentL;
	if (parentR) return parentR;
	return NULL;
}
 
node LeftChildB(node n, btree T){
	return n->left;
}
 
node RightChildB(node n, btree T){
	return n->right;
}
 
void CreateLeftB(int x, node n, btree T){
	if (n->left) cout <<"Vec postoji lijevo dijete!"<<endl;
	else{
		node novi=new bt;
		n->left=novi;
		novi->left=NULL;
		novi->right=NULL;
		novi->label=x;		
	}
}
 
void CreateRightB(int x, node n, btree T){
	if (n->right) cout <<"Vec postoji desno dijete!"<<endl;
	else{
		node novi=new bt;
		novi->left=NULL;
		novi->right=NULL;
		novi->label=x;
		n->right=novi;
	}
}
 
void DeleteB(node n, btree T){
	if(n->left) DeleteB(n->left,T);
	if(n->right) DeleteB(n->right,T);
	if(n!=RootB(T) && LeftChildB(ParentB(n,T),T)==n)
			ParentB(n,T)->left=NULL;
		else if (n!=RootB(T))
			ParentB(n,T)->right=NULL;
			cout<<"Izbrisan cvor "<<n->label<<endl;
	delete n;
}
 
bool ExistRightChild(node n,btree T){
	if(n->right==NULL) return false;
	return true;
}
 
bool ExistLeftChild(node n,btree T){
	if(n->left==NULL) return false;
	return true;
}

Initial URL


Initial Description
Binarno_stablo_pokazivac

Initial Title
Binarno_stablo_pokazivac.h

Initial Tags


Initial Language
C++