Revision: 38991
Updated Code
at January 11, 2011 19:41 by tjakopec
Updated Code
struct element {
int label;
element *left,*right;
};
typedef element *cvor;
typedef element bt;
bt* InitB(int x, bt* T){
T = new element;
T->label = x;
T->left = NULL;
T->right = NULL;
return T;
}//initB
void CreateLeftB(int x, cvor n, bt* T){
if(n->left) {
cout << "Greska" << endl << endl;
return;
}
cvor novi = new element;
n->left = novi;
novi->label = x;
novi->left = NULL;
novi->right = NULL;
}//CreateLeftB
void CreateRightB(int x, cvor n, bt* T){
if(n->right) {
cout << "Greska" << endl << endl;
return;
}
cvor novi = new element;
n->right = novi;
novi->label = x;
novi->left = NULL;
novi->right = NULL;
}//createRightB
cvor ParentB(cvor n, bt* T){
if (n == T) return NULL;
cvor roditelj = NULL;
if (T->left){
if (T->left == n) return T;
else roditelj = ParentB(n, T->left);
}
if(T->right){
if (T->right == n) return T;
else roditelj = ParentB(n, T->right);
}
return roditelj;
}//parentB
int LabelB(cvor n, bt* T){
return n->label;
}//labelB
void ChangeLabelB(int x, cvor n, bt* T){
if(!n) return;
n->label = x;
}//changeLabelB
cvor LeftChildB(cvor n, bt* T){
if(!n || !n->left) return NULL;
return n->left;
}//leftCildB
cvor RightChildB(cvor n, bt* T){
if(!n || !n->right) return NULL;
return n->right;
}//rightCildB
cvor RootB(bt* T){
if(!T) return NULL;
return T;
}//rootB
void DeleteB(cvor n, bt* T){
static bool jednom = false;
if(!jednom) {
cvor roditelj = ParentB(n, T);
if(roditelj->left == n) roditelj->left = NULL;
else roditelj->right = NULL;
jednom = true;
}
if(n->left) DeleteB(n->left, T);
if(n->right) DeleteB(n->right, T);
delete n;
}//deleteB
Revision: 38990
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at January 11, 2011 19:31 by tjakopec
Initial Code
1.
struct element {
2.
int label;
3.
element *left,*right;
4.
};
5.
typedef element *cvor;
6.
typedef element bt;
7.
8.
bt* InitB(int x, bt* T){
9.
T = new element;
10.
T->label = x;
11.
T->left = NULL;
12.
T->right = NULL;
13.
return T;
14.
}//initB
15.
16.
void CreateLeftB(int x, cvor n, bt* T){
17.
if(n->left) {
18.
cout << "Greska" << endl << endl;
19.
return;
20.
}
21.
cvor novi = new element;
22.
n->left = novi;
23.
novi->label = x;
24.
novi->left = NULL;
25.
novi->right = NULL;
26.
}//CreateLeftB
27.
28.
void CreateRightB(int x, cvor n, bt* T){
29.
if(n->right) {
30.
cout << "Greska" << endl << endl;
31.
return;
32.
}
33.
cvor novi = new element;
34.
n->right = novi;
35.
novi->label = x;
36.
novi->left = NULL;
37.
novi->right = NULL;
38.
}//createRightB
39.
40.
cvor ParentB(cvor n, bt* T){
41.
if (n == T) return NULL;
42.
cvor roditelj = NULL;
43.
if (T->left){
44.
if (T->left == n) return T;
45.
else roditelj = ParentB(n, T->left);
46.
}
47.
if(T->right){
48.
if (T->right == n) return T;
49.
else roditelj = ParentB(n, T->right);
50.
}
51.
return roditelj;
52.
}//parentB
53.
54.
int LabelB(cvor n, bt* T){
55.
return n->label;
56.
}//labelB
57.
58.
void ChangeLabelB(int x, cvor n, bt* T){
59.
if(!n) return;
60.
n->label = x;
61.
}//changeLabelB
62.
63.
cvor LeftChildB(cvor n, bt* T){
64.
if(!n || !n->left) return NULL;
65.
return n->left;
66.
}//leftCildB
67.
68.
cvor RightChildB(cvor n, bt* T){
69.
if(!n || !n->right) return NULL;
70.
return n->right;
71.
}//rightCildB
72.
73.
cvor RootB(bt* T){
74.
if(!T) return NULL;
75.
return T;
76.
}//rootB
77.
78.
void DeleteB(cvor n, bt* T){
79.
static bool jednom = false;
80.
if(!jednom) {
81.
cvor roditelj = ParentB(n, T);
82.
if(roditelj->left == n) roditelj->left = NULL;
83.
else roditelj->right = NULL;
84.
jednom = true;
85.
}
86.
87.
if(n->left) DeleteB(n->left, T);
88.
if(n->right) DeleteB(n->right, T);
89.
delete n;
90.
}//deleteB
Initial URL
Initial Description
Initial Title
bstablo_pokazivac.h
Initial Tags
Initial Language
C++