rosamis / alg3

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Segue o trabalho de Algoritmos 3 da UFPR desenvolvido por Roberta Samistraro Tomigian de GRR20171631.

O trabalho usa como base uma árvore binária de busca A que tem como nodos uma árvore secundária B. 

A árvoreA tem as seguintes funcionalidades:
    1) Busca: imprime em parenteses alinhados cada nodo da arvoreA visitado, que é a arvoreB. E verifica se a soma da árvoreB está inclusa na árvoreA.
    2) Inclusão: recebe uma árvoreB e inclui se não existe nenhum com a mesma soma. 
    3) Exclusão: recebe uma árvoreB, calcula index, busca pelo index e remove se existir na árvoreA.
    4) Impressão: imprime em pré-ordem a árvoreA, em colchetes alinhados. Cada nodo dele é uma representação em parenteses alinhados da árvoreB.

    Todo elemento da árvore A possui um index que simboliza a soma de todos os nos da Árvore B. A busca procura na árvore um elemento que possui o mesmo index de uma determinada sub árvore.
    Esse programa não tem como finalidade comparar a sub-árvore buscada com as existentes, e de mesmo indice, na árvore principal.

A árvoreB tem as seguintes funcionalidades: 
    1) Inclusão: Funciona do mesmo modo que árvoreA, mas com inteiros como nodo.
    2) Impressão: Em parenteses alinhados. 

Leitura e escrita:
    O programa recebe um arquivo de entrada que contém em seu interior instruções desse modo: char árvoreB
    No qual o char pode ser i (inserção), b (busca) e r (remocao). E a árvoreB é uma árvore em parênteses alinhados, por exemplo, (10(5)()). 
    Após a leitura ele faz as contas necessárias e grava em um arquivo de saída a árvoreA e todos os seus passo-a-passo de execução, que estão contidos no de entrada.
    Esse passo-a-passo pode ser inserção, busca e remocao, em suas ordens desejadas e seus respectivos valores.

Compilação:
    Para compilar deve-se digitar make na linha de comando (dentro da pasta que contém o programa). No makefile tem os seguintes comandos: 

    gcc -o busca busca.c árvoreA.c árvoreB.c
    busca teste.in > teste_arq.out 

    No qual teste.in é o arquivo de entrada e o teste_arq.out é o de saída.
    Na própria pasta de input, contida nesse zip, há alguns exemplos de entradas e seu formato correto. E um exemplo de output para o input testado.

About


Languages

Language:C 99.1%Language:Makefile 0.9%