/ Published in: C++
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include <stdlib.h> #define ARRAYSIZE 1000000 struct element { int label; int used; }; typedef struct bt { struct element elements[ARRAYSIZE]; } *btree; typedef int node; btree init(int x) { btree myBTree; int i; myBTree = (btree)malloc(sizeof(struct bt)); for(i = 1; i < ARRAYSIZE; i++){ if(i == 1) { myBTree->elements[i].label = x; myBTree->elements[i].used = 1; } else { myBTree->elements[i].used = 0; } } return myBTree; } node root(btree T) { return 1; } node parrent(node n, btree T) { if(n == 1) { printf("Roditelj korjenskog cvora ne postoji\n"); return -1; } if(T->elements[n].used == 0) { printf("Ne postoji\n"); exit(1); } return (n/2); } node leftChild(node n, btree T) { node child; child = n * 2; if (child > ARRAYSIZE-1) { printf("\noverflow\n"); return -1; //exit(1); } if(T->elements[child].used == 0) { return -1; } else { return child; } } node rightChild(node n, btree T) { node child; child = (n * 2) + 1; if (child > ARRAYSIZE - 1) { printf("\noverflow\n"); return -1; //exit(1); } if(T->elements[child].used == 0) { return -1; } else { return child; } } int label(node n, btree T) { if(T->elements[n].used == 0) { printf("ne postoji\n"); return -1; } else { return T->elements[n].label; } } void changeLabel(int x, node n, btree T) { if(T->elements[n].used == 0) { printf("ne postoji\n"); return; } else { T->elements[n].label = x; } } void createLeft(int x, node n, btree T) { node child; child = n * 2; if (child > ARRAYSIZE - 1) { printf("\noverflow\n"); return; } if(T->elements[child].used == 1){ printf("lijevi vec postoji\n"); return; } else { T->elements[child].used = 1; T->elements[child].label = x; } } void createRight(int x, node n, btree T) { node child; child = (n * 2) + 1; if (child > ARRAYSIZE - 1) { printf("\noverflow\n"); return; } if(T->elements[child].used == 1) { printf("desno vec postoji\n"); return; } else { T->elements[child].used = 1; T->elements[child].label = x; } } void deleteN(node n, btree T){ if(n == -1) return; deleteN(leftChild(n, T), T); T->elements[n].used=0; deleteN(rightChild(n, T), T); } void deleteNode(node n, btree T ){ if(parrent(n, T) == -1){ printf("Korjen se nemoze obrisat\n"); return; } deleteN(n,T); }