long initializeTree(long index, long *arr, node *tree, long start, long end){ long mid, l, r; tree[index].left = start, tree[index].right = end; if ( start == end ) return tree[index].val = start; mid = (start + end)>>1; l = initializeTree( leftChild(index), arr, tree, start, mid ); r = initializeTree( rightChild(index), arr, tree, mid + 1, end); return tree[index].val = minimumValue( arr, l, r ); }
int main() { nAryTree tree; int root = 0; initializeTree(&tree, sizeof(int), &root); int infoChild = 1; add_child(&tree, &root, &infoChild, compare_int); infoChild = 2; add_child(&tree, &root, &infoChild, compare_int); infoChild = 3; add_child(&tree, &root, &infoChild, compare_int); root = 2; infoChild = 4; add_child(&tree, &root, &infoChild, compare_int); print_pre_order(&tree, print_integer); printf("\n"); int nodeThatShallBeRemoved = 1; Node removed; remove_node(&tree,&nodeThatShallBeRemoved,&removed, compare_int); print_pre_order(&tree, print_integer); return 0; }
int main(void) { initializeTree(); while(1) { printf("1. Insert item. 2. Delete item. 3. Search item. \n"); printf("4. Print height of tree. 5. Print height of an item. \n"); printf("6. PrintInOrder. 7. Range Search.\n"); int ch; scanf("%d",&ch); if(ch==1) { int item; scanf("%d", &item); insertItem(root, item); } else if(ch==2) { int item; scanf("%d", &item); deleteItem(root, item); } else if(ch==3) { int item; scanf("%d", &item); struct treeNode * res = searchItem(root, item); if(res!=0) printf("Found.\n"); else printf("Not found.\n"); } else if(ch==4) { int height = calcNodeHeight(root); printf("Height of tree = %d\n", height); } else if(ch==5) { int item; scanf("%d", &item); int height = calcHeight(item); printf("Height of %d = %d\n", item, height); } else if(ch==6) { int h = calcNodeHeight(root); printf("\n--------------------------------\n"); printInOrder(root, h); printf("--------------------------------\n"); } else if(ch==7) { int l,r; scanf("%d%d",&l,&r); printf("%d\n",rangeSearch(root,l,r)); } } }
int AnalysisManager::initializeTrees(void) { int entries = 0; for(std::map<std::string,TFile*>::iterator fileIt=inFilesList_.begin(); fileIt!=inFilesList_.end(); fileIt++) entries += initializeTree(fileIt->first); return entries; }
int main(int argc, char *argv[]){ //Estruturas BuscaRetorno* r; Arvore* raiz; //Inicializacao da arvore resetActualTree(); raiz = initializeTree(); //Parametros char* nameEntrada = argv[1]; char* nameBusca = argv[2]; char* nameSaida = argv[3]; //Arquivo FILE *arq; FILE *write; char info[MAX_LENGHT_WORD]; // ==================== INSERINDO ========================= printf("Inserindo na arvore\n"); fopen_s(&arq,nameEntrada,"r"); if(arq == NULL) printf("Erro, nao foi possivel abrir o arquivo\n"); else while( (fgets(info, sizeof(info), arq))!=NULL ) raiz = adiciona(raiz,novoNo(info)); fclose(arq); //raiz = adiciona(raiz,novoNo("1")); // ==================== BUSCANDO ========================= printf("\nBUSCANDO\n"); fopen_s(&arq,nameBusca,"r"); if(arq == NULL) printf("Erro, nao foi possivel abrir o arquivo de leitura\n"); else{ fopen_s(&write,nameSaida,"w"); if(arq == NULL) printf("Erro, nao foi possivel abrir o arquivo de escrita\n"); else while( (fgets(info, sizeof(info), arq))!=NULL ){ r = busca(raiz,info); info[strlen(info)-1] = '\0'; if(encontrouNaBusca(r)) fprintf(write,"%s presente %d\n",info,profDaBusca(r)); else fprintf(write,"%s ausente %d\n",info,profDaBusca(r)); } } fclose(arq); fclose(write); }
int deleteItem(struct treeNode * node, int item) { struct treeNode *parent=0,*del=0; int type; if (node==0) return 0; if (root->item==item && root==node){ parent=0; del=root; } if (node->left!=0 && node->left->item==item ){ parent=node; del=node->left; type=0; } if (node->right!=0 && node->right->item==item){ parent=node; del=node->right; type=1; } if (parent==0 && del==0){ int t=deleteItem(node->left,item); if(t==FALSE_VALUE)t=deleteItem(node->right,item); return t; } else { if (del->left==0 && del->right==0){ free(del); if(parent==0) initializeTree(); else if(type==0) parent->left=0; else parent->right=0; } else if (del->left==0){ if (parent==0) root=del->right; else if (type==0) parent->left=del->right; else parent->right=del->right; free(del); } else if (del->right==0){ if (parent==0) root=del->left; else if (type==0) parent->left=del->left; else parent->right=del->left; free(del); } else{ struct treeNode *scc; scc=findSuccessor(del,del->item); int x; x=del->item; del->item=scc->item; scc->item=x; deleteItem(root,scc->item); } return TRUE_VALUE; } }
int main(){ long i, n, q, x, y; int test, kase; scanf ("%d", &test); for ( kase = 1 ; kase <= test ; kase++ ){ scanf("%ld%ld", &n, &q); for ( i = 0 ; i < n ; i++ ) scanf("%ld", &array[i]); initializeTree(0, array, tree, 0, n-1); printf("Case %d:\n", kase); while ( q-- ){ scanf("%ld%ld", &x, &y); if ( x > y ) x ^= y ^= x ^= y; x--, y--; printf("%ld\n", array[query(0, array, tree, x, y)]); } } return 0; }
int main() { char programName[] = "trees"; int data; int chosenOperation; printf ( "Welcome to %s\n", programName ); BinaryTree *theTree = NULL; initializeTree ( theTree ); do { printf ( "%s", mainMenuString ); chosenOperation = fetchINT ( stdin ); switch ( chosenOperation ) { case AddToTree: if ( isTreeFull ( *theTree ) ) { printf ( "sorry the queue is full\n" ); } else { printf ( "Enter a number: " ); data = fetchINT ( stdin ); addToTree ( theTree, data ); } break; case 2: if ( isTreeEmpty ( *theTree ) ) { printf ( "sorry the queue is empty\n" ); } else { printf ( "The number is %d\n", takeFromTree ( theTree, data ) ); } break; case 3: if ( isTreeEmpty ( *theTree ) ) { printf ( "sorry the queue is empty\n" ); } else { printTree ( theTree ); } break; case 4: printf ( "bye\n" ); break; default: printf ( "Oops Wrong input\n" ); chosenOperation = AddToTree; } } while ( ! ( ( chosenOperation < AddToTree ) || ( chosenOperation >= Quit ) ) ); emptyTree ( theTree ); free ( theTree ); return EXIT_SUCCESS; }
int main(void) { initializeTree(); while(1) { printf("\n1. Insert item. 2. Delete item. 3. Search item. \n"); printf("4. Print height of tree. 5. Print height of an item. \n"); printf("6. PrintInOrder. 7. Calculate Depth 8. get MinItem. 9. get MaxItem.\n10. Range search. 11. Delete. 12. exit.\n"); int ch; scanf("%d",&ch); if(ch==1) { int item; scanf("%d", &item); insertItem(root, item); } else if(ch==2) { int item; scanf("%d", &item); deleteItem(root, item); } else if(ch==3) { int item; scanf("%d", &item); struct treeNode * res = searchItem(root, item); if(res!=0) printf("Found.\n"); else printf("Not found.\n"); } else if(ch==4) { int height = calcNodeHeight(root); printf("Height of tree = %d\n", height); } else if(ch==5) { int item; scanf("%d", &item); int height = calcHeight(item); printf("Height of %d = %d\n", item, height); } else if(ch==6) { int h = calcNodeHeight(root); printf("\n--------------------------------\n"); printInOrder(root, h); printf("--------------------------------\n"); } else if(ch==12) { break; } else if(ch==7) { int i; scanf("%d",&i); printf("depth %d\n",calcDepth(i)); } else if(ch==8) { printf("min item %d\n",getMinItem()); } else if(ch==9) { printf("max item %d\n",getMaxItem()); } else if(ch==10) { int item1,item2; scanf("%d%d", &item1,&item2); printf("Item number %d",rangeSearch(root,item1,item2)); } else if(ch==11) { int a; scanf("%d",&a); deleteItem(root,a); } } }
int main(void) { //freopen("in2.txt", "r", stdin); initializeTree(); while(1) { //printMenu(); int ch; scanf("%d",&ch); if(ch == 1) { int item; scanf("%d", &item); insertItem(root, item); } else if(ch == 2) { int item; scanf("%d", &item); deleteItem(root, item); } else if(ch == 3) { int item; scanf("%d", &item); struct treeNode * res = searchItem(root, item); if(res!=0) printf("Found.\n"); else printf("Not found.\n"); } else if(ch == 4) { int height = calcNodeHeight(root); printf("Height of tree = %d\n", height); } else if(ch == 5) { int item; scanf("%d", &item); int height = calcHeight(item); printf("Height of %d = %d\n", item, height); } else if(ch == 6) { int h = calcNodeHeight(root); printf("\n--------------------------------\n"); printInOrder(root, h); printf("--------------------------------\n"); } else if(ch == 7) { printf("%d\n", getSize(root)); } else if(ch == 8) { int item; scanf("%d", &item); printf("%d\n", calcDepth(item)); } else if(ch == 9) { printf("%d\n", calcNodeDepth(root)); } else if(ch == 10) { if(root == 0) { printf("tree is empty\n"); continue; } printf("%d\n", getMinItem()); } else if(ch == 11) { if(root == 0) { printf("tree is empty\n"); continue; } printf("%d\n", getMaxItem()); } else if(ch == 12) { int left, right; scanf("%d %d", &left, &right); printf("%d\n", rangeSearch(root, left, right)); } else if(ch == 13) { int item; scanf("%d", &item); //printf("Del : %d\n", item); //deleteItem(root, item); printf("%d\n", deleteItem(root, item)); } else if(ch == 14) { break; } } }
Symbols::Symbols(BCD* bcd_, int symbolBase_) : bcd(bcd_) { bcd = bcd_; file = bcd->file; symbolBase = symbolBase_; offsetBase = (symbolBase - ALTO_BIAS) * WORDS_PER_PAGE; file->position(offsetBase); versionIdent = file->getCARD16(); if (versionIdent != VersionID) { logger.fatal("versionIdent %d", versionIdent); logger.fatal("symbolBase %d", symbolBase); ERROR(); } version = Stamp::getInstance(bcd) ; creator = Stamp::getInstance(bcd) ; sourceVersion = Stamp::getInstance(bcd) ; logger.info("version %s", version->toString().toLocal8Bit().constData()); logger.info("creator %s", creator->toString().toLocal8Bit().constData()); logger.info("source %s", sourceVersion->toString().toLocal8Bit().constData()); CARD16 word = file->getCARD16(); definitionsFile = bitField(word, 15); logger.info("definitionFile %d", definitionsFile); directoryCtx = CTXIndex::getInstance(this, bitField(word, 1, 15)); logger.info("directoryCtx %s", directoryCtx->toString().toLocal8Bit().constData()); importCtx = CTXIndex::getInstance(this, file->getCARD16()); logger.info("importCtx %s", importCtx->toString().toLocal8Bit().constData()); outerCtx = CTXIndex::getInstance(this, file->getCARD16()); logger.info("outerCtx %s", outerCtx->toString().toLocal8Bit().constData()); hvBlock = BlockDescriptor::getInstance(bcd); logger.info("hvBlock %s", hvBlock->toString().toLocal8Bit().constData()); htBlock = BlockDescriptor::getInstance(bcd); logger.info("htBlock %s", htBlock->toString().toLocal8Bit().constData()); ssBlock = BlockDescriptor::getInstance(bcd); logger.info("ssBlock %s", ssBlock->toString().toLocal8Bit().constData()); outerPackBlock = BlockDescriptor::getInstance(bcd); // logger.info("outerPackBlock %s", outerPackBlock->toString().toLocal8Bit().constData()); innerPackBlock = BlockDescriptor::getInstance(bcd); // logger.info("innerPackBlock %s", innerPackBlock->toString().toLocal8Bit().constData()); constBlock = BlockDescriptor::getInstance(bcd); // logger.info("constBlock %s", constBlock->toString().toLocal8Bit().constData()); seBlock = BlockDescriptor::getInstance(bcd); logger.info("seBlock %s", seBlock->toString().toLocal8Bit().constData()); ctxBlock = BlockDescriptor::getInstance(bcd); logger.info("ctxBlock %s", ctxBlock->toString().toLocal8Bit().constData()); mdBlock = BlockDescriptor::getInstance(bcd); logger.info("mdBlock %s", mdBlock->toString().toLocal8Bit().constData()); bodyBlock = BlockDescriptor::getInstance(bcd); logger.info("bodyBlock %s", bodyBlock->toString().toLocal8Bit().constData()); extBlock = BlockDescriptor::getInstance(bcd); // logger.info("extBlock %s", extBlock->toString().toLocal8Bit().constData()); treeBlock = BlockDescriptor::getInstance(bcd); // logger.info("treeBlock %s", treeBlock->toString().toLocal8Bit().constData()); litBlock = BlockDescriptor::getInstance(bcd); // logger.info("litBlock %s", litBlock->toString().toLocal8Bit().constData()); sLitBlock = BlockDescriptor::getInstance(bcd); // logger.info("sLitBlock %s", sLitBlock->toString().toLocal8Bit().constData()); epMapBlock = BlockDescriptor::getInstance(bcd); // logger.info("epMapBlock %s", epMapBlock->toString().toLocal8Bit().constData()); spareBlock = BlockDescriptor::getInstance(bcd); // logger.info("spareBlock %s", spareBlock->toString().toLocal8Bit().constData()); fgRelPgBase = file->getCARD16(); // logger.info("fgRelPgBase %d", fgRelPgBase); fgPgCount = file->getCARD16(); // logger.info("fgPgCount %d", fgPgCount); // Read block initializeSS(ssBlock); initializeHT(htBlock); initializeMD(mdBlock); initializeCTX(ctxBlock); initializeSE(seBlock); initializeBT(bodyBlock); initializeLT(litBlock); initializeExt(extBlock); initializeTree(treeBlock); BTIndex::checkAll(); CTXIndex::checkAll(); ExtIndex::checkAll(); HTIndex::checkAll(); LTIndex::checkAll(); MDIndex::checkAll(); SEIndex::checkAll(); TreeIndex::checkAll(); };