Revision: 38674
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at January 6, 2011 05:10 by anblazevi
Initial Code
struct element
{
labeltype label;
int left, right, available;
};
typedef struct bt
{
element data [10000];
int current;
} *bTree;
typedef int node;
int ExistsLeftChild(node n, bTree tTree)
{
if (tTree->data[n].left == -1)
return 0;
else
return 1;
}
int ExistsRightChild(node n, bTree tTree)
{
if (tTree->data[n].right == -1)
return 0;
else
return 1;
}
void InitB(labeltype tElem, bTree tTree)
{
tTree->data[0].label = tElem;
tTree->data[0].available = 0;
tTree->data[0].left = -1;
tTree->data[0].right = -1;
for (int i = 1; i<10000; i++)
{
tTree->data[i].available = 1;
tTree->data[i].left = -1;
tTree->data[i].right = -1;
}
tTree->current = 1;
}
labeltype LabelB(node n, bTree tTree)
{
return tTree->data[n].label;
}
node RootB(bTree tTree)
{
if (tTree->data[0].available == 1)
return -1;
else
return 0;
}
node LeftChildB(node n, bTree tTree)
{
return tTree->data[n].left;
}
node RightChildB(node n, bTree tTree)
{
return tTree->data[n].right;
}
void ChangeLabelB(labeltype x, node n, bTree tTree)
{
tTree->data[n].label = x;
}
node ParentB(node n, bTree tTree)
{
int pronadjen = 0, i = 0;
if (n == RootB(tTree))
return -1;
else
{
while (pronadjen == 0)
{
if (tTree->data[i].left == n)
{
return i;
pronadjen = 1;
}
else if (tTree->data[i].right == n)
{
return i;
pronadjen = 1;
}
i++;
}
}
}
void CreateLeftB(labeltype x, node n, bTree tTree)
{
tTree->current = 1;
while (tTree->data[tTree->current].available == 0)
{
tTree->current++;
}
if (tTree->data[n].available == 1)
{
cout << "Cvor ne postoji te mu ne mozemo dodati djecu.\n" << endl;
}
else
{
tTree->data[n].left = tTree->current;
tTree->data[tTree->current].label = x;
tTree->data[tTree->current].available = 0;
}
}
void CreateRightB(labeltype x, node n, bTree tTree)
{
tTree->current = 1;
while (tTree->data[tTree->current].available == 0)
{
tTree->current++;
}
if (tTree->data[n].available == 1)
{
cout << "Cvor ne postoji te mu ne mozemo dodati djecu.\n" << endl;
}
else
{
tTree->data[n].right = tTree->current;
tTree->data[tTree->current].label = x;
tTree->data[tTree->current].available = 0;
}
}
void DeleteB(node n, bTree tTree)
{
node pNode;
if (ExistsLeftChild(n, tTree) == 1)
DeleteB(LeftChildB(n, tTree), tTree);
if (ExistsRightChild(n, tTree) == 1)
DeleteB(RightChildB(n, tTree), tTree);
pNode = ParentB(n, tTree);
if (tTree->data[pNode].left == n)
tTree->data[pNode].left = -1;
else
tTree->data[pNode].right = -1;
if ((tTree->data[n].left == -1) && (tTree->data[n].right == -1))
tTree->data[n].available = 1;
}
Initial URL
Initial Description
Initial Title
bstablo_polje.h
Initial Tags
Initial Language
C++