Return to Snippet

Revision: 38573
at January 5, 2011 06:04 by sara


Initial Code
#include <stdlib.h>
#define Null NULL
typedef int labeltype;

typedef struct element {
    labeltype label;
    struct element *left,*right,*parrent;
}*btree, *node;

btree InitB (labeltype x){
    btree myBTree;

    myBTree=(btree)malloc(sizeof(struct element));
    myBTree->left=NULL;
    myBTree->right=NULL;
    myBTree->parrent=NULL;
    myBTree->label=x;

    return myBTree;
}

node RootB(btree T){
    return (node)T;
}

node ParrentB(node n, btree T){
    if(n==T){
        printf("Zatrazili ste roditelja korjenskog cvora\n");
        return Null;
    }else{
        return n->parrent;
    }
}

node LeftChildB(node n, btree T){
    if(n->left==NULL){
        return Null;
    }else{
        return n->left;
    }
}

node RightChildB(node n, btree T){
    if(n->right==NULL){
        return Null;
    }else{
        return n->right;
    }
}

labeltype LabelB(node n, btree T){
    return n->label;
}

void ChangeLabelB(labeltype x, node n, btree T){
    n->label=x;
}

void CreateLeftB(labeltype x, node n, btree T){
    node child;

    if(n->left!=NULL){
        printf("Lijevo dijete ovog cvora vec postoji\n");
        exit(1);
    }

    child=(node)malloc(sizeof(struct element));
    child->left=NULL;
    child->right=NULL;
    child->parrent=n;
    n->left=child;
    child->label=x;
}

void CreateRightB(labeltype x, node n, btree T){
    node child;

    if(n->right!=NULL){
        printf("Desno dijete ovog cvora vec postoji\n");
        exit(1);
    }

    child=(node)malloc(sizeof(struct element));
    child->left=NULL;
    child->right=NULL;
    child->parrent=n;
    n->right=child;
    child->label=x;
}

void DeleteBRek(node n, btree T){
    if( n == NULL )
        return;
    DeleteBRek(LeftChildB(n, T), T);
    
    node parrent;
    parrent=n->parrent;
    
    if(parrent->left==n)
        parrent->left=NULL;
    if(parrent->right==n)
        parrent->right=NULL;

    free(n);
    n=parrent;
    
    DeleteBRek(RightChildB(n, T), T);
}

void DeleteB(node n, btree T ){
    if(n->parrent==NULL){
        printf("Ne mogu obrisati korjen\n");
        exit(1);
    }
    
    node parrent;
    parrent=n->parrent;

    if(parrent->left==n)
        parrent->left=NULL;
    if(parrent->right==n)
        parrent->right=NULL;

    DeleteBRek(n, T);
}

Initial URL


Initial Description


Initial Title
bstablo_pokazivaci.h

Initial Tags


Initial Language
C++