Ir para conteúdo
Fórum Script Brasil

gutozanin

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Posts postados por gutozanin

  1. Resumidamente trabalho trata- se computar o percurso pos-ordem de uma arvore dado que tenho o percurso pre ordem e em-ordem

    No entando meu codigo não consegue fazer corretamente pois a eu acho que a inserção dos elementos na arvores esta sendo feita de maneira incorreta, porem não consigo bolar um jeito de inserir o percurso pre e em-ordem na arvore de modo que quando percorre-la me pos odem os elementos estejam de maneria correta

    Em anexo esta o enunciado do trabalho e meu codigo.

    Por favor me ajudem

    Forte abraço

    sqtpm

    Data limite para envio: 2012/11/18 23:59:59

    Multa por dia de atraso: 10%

    Trabalho 5 - Pré, Em e Pós

    ATENÇÃO: O Trabalho deve ser resolvido utilizando Árvores, caso contrário, a nota será zerada.

    Um problema comum em estruturas de dados é determinar o percorrimento de uma árvore binária. Existem três maneiras clássicas de fazer isso:

    Pré-ordem: Você deve visitar primeiro a raiz, depois a sub-árvore esquerda e por último a sub-árvore direita.

    Em-ordem: Você deve visitar primeiro a sub-árvore esquerda, depois a raiz e por último a sub-árvore direita.

    Pós-ordem: Você deve visitar primeiro a sub-árvore esquerda, depois a sub-árvore direita e por último a raiz.

    Veja a figura abaixo:

    A

    / \

    B D

    / / \

    C E F

    O resultado do percurso em pré, em e pós-ordem é, respectivamente: ABCDEF, CBAEDF e CBEFDA. Neste problema, você deve computar o percurso em pós-ordem de uma árvore binária dados os seus percursos em-ordem e pré-ordem.

    Entrada

    O conjunto de entrada consiste de um número C ≤ 2000, que dá o número de casos de teste e C linhas, uma para cada caso de teste. Cada caso de teste começa com um número 1 ≤ N ≤ 52, o número de nós nessa árvore arbitrária. Depois, há duas cadeias de caracteres S1 e S2 que descrevem o resultado do percurso da árvore em pré-ordem e em-ordem. Os nós da árvore são rotulados com caracteres diferentes no intervalo a..z e A..Z. Os valores de N, S1 e S2 são separados por um espaço em branco.

    Saída

    Para cada conjunto de entrada, você deve imprimir uma linha contendo o percorrimento em pós-ordem da árvore correspondente.

    Exemplo

    Entrada:

    3

    3 xYz Yxz

    3 abc cba

    6 ABCDEF CBAEDF

    Saída:

    Yzx

    cba

    CBEFDA

    sqtpm

    Aqui esta meu codigo

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    
    
    
    typedef struct No{
        char dado;
        struct No *esquerda;
        struct No *direita;
    }No;
    
    
    void criarArvore(No **pRaiz){
        *pRaiz = NULL;
    }
    
    
    
    void inserir(No **pRaiz, int entrada){
        if(*pRaiz == NULL){
            *pRaiz = (No *) malloc(sizeof(No));
            (*pRaiz)->esquerda = NULL;
            (*pRaiz)->direita = NULL;
            (*pRaiz)->dado = entrada;
        }else{
            if(entrada > (*pRaiz)->dado)
                inserir(&(*pRaiz)->direita, entrada);
            if(entrada < (*pRaiz)->dado)
                inserir(&(*pRaiz)->esquerda, entrada);
        }
    }
    
    
    
    void exibirPosOrdem(No *pRaiz){
        if(pRaiz != NULL){
               
            exibirPosOrdem(pRaiz->esquerda);  
            
            exibirPosOrdem(pRaiz->direita);
                 printf("%c", pRaiz->dado);
            
        }
    }
    
    
    int main (void){
        
        char preord[52], inord[52];
        int nos, vezes;
        int i,j;
        scanf("%d",&vezes);
    
        
        No *arvore;
        
        
        
        for(j = 0; j < vezes; j++){
        criarArvore(&arvore);
        scanf("%d", &nos);
        scanf("%s", &preord);
        scanf("%s", &inord);
        
        for(i = 0; i < nos; i++){
        
                inserir(&arvore, preord[i]);
                
                }
    
                     exibirPosOrdem(arvore);
                     printf("\n");
    
    
    }
    
    system("pause");
    
    }

×
×
  • Criar Novo...