Return to Snippet

Revision: 65691
at January 12, 2014 00:31 by mvracan


Initial Code
#include<iostream>
using namespace std;
 
struct node{
    char label;
    int child,brother;
};
 
struct tree{
    node polje[10000];
    int root;
};
 
tree *InitT(int k,tree *T){
    T = new tree;
    for(int i=0;i<10000;i++){
        T->polje[i].label = ' ';
        T->polje[i].child = -1;
        T->polje[i].brother = -1;
        }
    T->polje[k].label = 'A';
    T->root = k;
    return T;
    }
 
void ChangeLabelT(char x,int n,tree *T){
    T->polje[n].label = x;
    }
 
int RootT(tree *T){
    return T->root;
    }
 
char LabelT(int n,tree *T){
    if(T->polje[n].label==' ') cout << "Cvor " << n << " ne postoji u stablu!" << endl;
    return T->polje[n].label;
    }
 
void CreateT(int x,int n,tree *T){
    if(T->polje[n].label==' ') cout << "Cvor " << n << " ne postoji u stablu!" << endl;
    else{
        if(T->polje[n].child==-1) T->polje[n].child = x;
        else if(T->polje[T->polje[n].child].brother==-1) T->polje[T->polje[n].child].brother = x;
        else{
            n = T->polje[n].child;
            while(T->polje[n].brother!=-1) n = T->polje[n].brother;
            T->polje[n].brother = x;
            }
        T->polje[x].label = T->polje[n].label+1;
        T->polje[x].child = -1;
        T->polje[x].brother = -1;
        }
    }
 
int FirstChildT(int n,tree *T){
    return T->polje[n].child;
    }
 
int NextSiblingT(int n,tree *T){
    return T->polje[n].brother;
    }
 
int ParentT(int n,tree *T){
    for(int i=0;i<10000;i++){
        if(T->polje[i].child==n) return i;
        if(T->polje[i].brother==n) return ParentT(i,T);
        }
    }
 
tree *DeleteT(int n,tree *T){
    if(n==RootT(T)){
                    T = InitT(-1,T);
                    return T;
                    }
    else{
         if(T->polje[n].child!=-1) DeleteT(T->polje[n].child,T);
         if(T->polje[n].brother!=-1) DeleteT(T->polje[n].brother,T);
         T->polje[n].child = -1;
         T->polje[n].brother = -1;
         T->polje[n].label = ' ';
         if(T->polje[ParentT(n,T)].brother!=-1) T->polje[ParentT(n,T)].child = T->polje[n].brother;
         else T->polje[ParentT(n,T)].child = -1;
         }
    }

Initial URL


Initial Description
zadatak4

Initial Title
opcenito stablo.h

Initial Tags


Initial Language
C++