Porfólio 2
a) in-ordem void emOrdem(struct No *pNo) { if(pNo != NULL) { emOrdem(pNo→pEsquerda); visita(pNo); emOrdem(pNo→pDireita); } }
b) pós-ordem void posOrdem(Struct No *pNo){ if(pNo != NULL){ posOrdem(pNo→pEsquerda); posOrdem(pNo→pDireita); visita(pNo); } }
c) pré-ordem void preOrdem(Struct No *pNo){ if(pNo != NULL){ visita(pNo); preOrdem(pNo→pEsquerda); preOrdem(pNo→pDireita); } }
2. Escrever um programa principal para testar 3 algoritmos citados no item 1 e pode utilizar o algoritmo geratree (..) que foi visto e escrito na aula.
#include
#include
#include /*Declaração do nó para a árvore, composto de ponteiros da direita e esquerda e de um campo para dado que no caso é o campo char dado[30];*/
struct no { char dado[30]; struct no *direita; struct no *esquerda; }; struct no *raiz; //Ponteiro da raiz struct no *alocar; //Ponteiro para fazer alocação /*Rotina de busca
Insere o dado em string e ela retorna o ponteiro em hexa para a região da memória para o qual o ponteiro está apontando*/ struct no * buscar(char *dado) { struct no *ponteiro; ponteiro = raiz; while (ponteiro) { if (strcmp(dado, ponteiro->dado)==0) //Faz a comparação de strings return ponteiro; //Retorna ponteiro se o encontrar if (strcmp(dado, ponteiro->dado)>0) ponteiro = ponteiro->direita; else ponteiro = ponteiro->esquerda; } return NULL; //Retorna o ponteiro nulo
}
/*Rotina que faz a inserção na árvore binária de busca
O Parâmetro dado recebe um ponteiro para string
A função não retorna valor nem