## Posted By

sesveteboy on 01/06/11

# Implementacija binarnog stabla pomocu pokazivaca

/ Published in: C++

`struct element {    int label;    element *left,*right;}; typedef element *node;typedef element bt; node ParentB(node n, bt* T) {    if (n == T) return NULL;        node 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;} node LeftChildB(node n, bt* T) {    if(!n || !n->left) return NULL;    return n->left; } node RightChildB(node n, bt* T) {    if(!n || !n->right) return NULL;    return n->right; } int LabelB(node n, bt* T) {    return n->label;} void ChangeLabelB(int x, node n, bt* T) {    if(!n) return;    n->label = x;} node RootB(bt* T) {    if(!T) return NULL;    return T;} void CreateLeftB(int x, node n, bt* T) {    if(n->left) {        cout << "Greska" << endl << endl;        return;    }    node novi = new element;    n->left = novi;    novi->label = x;    novi->left = NULL;    novi->right = NULL;} void CreateRightB(int x, node n, bt* T) {    if(n->right) {        cout << "Greska" << endl << endl;        return;    }    node novi = new element;    n->right = novi;    novi->label = x;    novi->left = NULL;    novi->right = NULL;} void DeleteB(node n, bt* T) {    static bool jednom = false;    if(!jednom) {      node 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;} bt* InitB(int x, bt* T) {    T = new element;    T->label = x;    T->left = NULL;    T->right = NULL;    return T;}`