stablo_binarno_pokazivaci.h





0
stablo_binarno_pokazivaci.h
#include <iostream>
using namespace std;
struct element {
       int label;
       struct element *left, *right;
       };
typedef struct element btree;
bool polje=false;
void InitB(int x, btree *BT) {
     BT->label=x;
     BT->left=NULL;
     BT->right=NULL;
     }
element *SearchB(int n, btree *BT) {
        if (n==BT->label) {
                return BT;
             }
        if (BT->left!=NULL)return SearchB(n, BT->left);
        if (BT->right!=NULL)return SearchB(n, BT->right );
     };
void CreateLeftB(int x, element *n, btree *BT) {
     element *novi=new element;
     if (n->left!=NULL) {
                        cout<<"Dijete vec postoji!\n";
                        return;
                        }
     n->left=novi;
     novi->label=x;
     novi->left=NULL;
     novi->right=NULL;
     };
void CreateRightB(int x, element *n, btree *BT) {
     element *novi=new element;
     if (n->right!=NULL) {
                        cout<<"Dijete vec postoji!\n";
                        return;
                        }
     n->right=novi;
     novi->label=x;
     novi->left=NULL;
     novi->right=NULL;
     };
element *LeftChildB(int n, btree *BT) {
     element *roditelj=SearchB(n,BT);
     if (roditelj->left==NULL) {
                               cout<<"Greska! Dijete ne postoji!\n";
                               roditelj->label=-1;
                               return roditelj;
                               }
     else {
          roditelj=roditelj->left;
          return roditelj;
          }
     };
element *RightChildB(int n, btree *BT) {
     element *roditelj=SearchB(n,BT);
     if (roditelj->right==NULL) {
                                cout<<"Greska! Dijete ne postoji!\n";
                                roditelj->label=-1;
                                return roditelj;
                                }
     else {
          roditelj=roditelj->right;
          return roditelj;
          }
     };
element RootB(btree *BT) {
        element ispis;
        ispis.label=BT->label;
        return ispis;
        };
element *ParentB(int n, btree *BT) {
        element *roditelj=NULL;
        if (n==BT->label) {
                          cout<<"Odabrali ste korijen!\n";
                          return NULL;
                          }
        else {
             if (BT->left) {
                           if (BT->left->label==n) return BT;
                           else roditelj=ParentB(n,BT->left);
                           }
             if (BT->right) {
                            if (BT->right->label==n) return BT;
                            else roditelj=ParentB(n,BT->left);
                            }
             }
        return roditelj;
     };
int LabelB(element *n, btree *BT) {
    return n->label;   
}
void ChangeLabelB(int x, element *n, btree *BT) {
    n->label=x;
}
void DeleteB(element *n, btree *BT) {
     static bool brisanje=true;
     if(brisanje) {
                   element *roditelj=ParentB(n->label,BT);
                   if(roditelj->left==n) roditelj->left=NULL;
                   else roditelj->right=NULL;
                   brisanje=false;
                 }
     if(n->left)DeleteB(n->left,BT);
     if(n->right)DeleteB(n->right,BT);
     delete n;
}

Matija Jurman

Comments

There are currently no comments for this snippet.

Voting

Votes Up


Votes Down