Revision: 68435
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at January 18, 2015 07:49 by hcosic2
Initial Code
#include <iostream>
using namespace std;
struct element
{
int label;
element *lijevi, *desni;
};
element *Tbin = new element;
element *Root (element *Tbin)
{
return Tbin;
}
element *pretrazivanje (element *el, int x) {
if (el -> label == x)
return el;
if (el -> lijevi != NULL)
if (pretrazivanje (el -> lijevi, x) != NULL)
return pretrazivanje (el -> lijevi, x);
if (el -> desni != NULL)
if (pretrazivanje (el -> desni, x) != NULL)
return pretrazivanje (el -> desni, x);
return NULL;
}
int Label (element *el)
{
return el -> label;
}
element *Parent (element *n, element *Tbin)
{
element *child = NULL, *sibling = NULL;
if (Tbin -> lijevi == n || Tbin -> desni == n)
return Tbin;
if (Tbin -> lijevi != NULL)
child = Parent (n, Tbin -> lijevi);
if (Tbin -> desni != NULL)
sibling = Parent (n, Tbin -> desni);
if (child != NULL)
return child;
if (sibling != NULL)
return sibling;
return NULL;
}
element *LeftChild (element *el)
{
return el -> lijevi;
}
element *RightChild (element *el)
{
return el -> desni;
}
void ChangeLabel (int x, element *el)
{
el -> label = x;
}
int CreateRight (int x, element *el)
{
if (RightChild (el) != NULL)
return 0;
element *novi = new element;
el -> desni = novi;
novi -> label = x;
novi -> lijevi = NULL;
novi -> desni = NULL;
return 1;
}
int CreateLeft (int x, element *el)
{
if (LeftChild (el) != NULL)
return 0;
element *novi = new element;
el -> lijevi = novi;
novi -> label = x;
novi -> lijevi = NULL;
novi -> desni = NULL;
return 1;
}
void Delete (element *el, element *Tbin)
{
if (el -> lijevi != NULL)
Delete (el -> lijevi, Tbin);
if (el -> desni != NULL)
Delete (el -> desni, Tbin);
if (el != Root (Tbin) && LeftChild (Parent (el, Tbin)) == el)
Parent (el, Tbin) -> desni = NULL;
else if (el != Root (Tbin))
Parent (el, Tbin) -> desni = NULL;
delete el;
}
void Init (int x, element *Tbin)
{
Tbin -> label = x;
Tbin -> lijevi = NULL;
Tbin -> desni = NULL;
}
void PreOrder (element *n, element *Tbin)
{
if (n == NULL)
return;
cout << n -> label << ", ";
PreOrder (LeftChild (n), Tbin);
PreOrder (RightChild (n), Tbin);
}
void InOrder (element *n, element *Tbin)
{
if (n == NULL)
return;
InOrder (LeftChild (n), Tbin);
cout << n -> label << ", ";
InOrder (RightChild (n), Tbin);
}
void PostOrder (element *n, element *Tbin)
{
if (n == NULL)
return;
PostOrder (LeftChild (n), Tbin);
PostOrder (RightChild (n), Tbin);
cout << n -> label << ", ";
}
Initial URL
Initial Description
Implementacija binarnog stabla pomoću pokazivaÄa
Initial Title
binstablo_pokazivac.h
Initial Tags
Initial Language
C++