Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Vera_Simoes

Árvores

Recommended Posts

Vera_Simoes

Boas pessoal, 

Eu precisava de ajuda, estou na universidade e tenho um mini-trabalho que é criar umas funções que me listem os nos de uma árvore por níveis. E não sei como fazer

 

Obrigado

Share this post


Link to post
Share on other sites
HappyHippyHippo

tens que usar uma queue

mandas o  ó raiz para a queue, e depois é :

- tirar um nó da queue

- apresentar o nó

- inserir na queue os nós derivados do nó que tiraste


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Vera_Simoes
Em 16/05/2019 às 22:35, HappyHippyHippo disse:

tens que usar uma queue

mandas o  ó raiz para a queue, e depois é :

- tirar um nó da queue

- apresentar o nó

- inserir na queue os nós derivados do nó que tiraste

Eu fiz assim no entanto o professor diz que esta demasiado recursivo e que tenho de o tornar mais rápido. E também acho esta solução confusa tirei a ideia de outro programa mas funciona. Agora nao tenho ideia como otimizar

 

void mostrar(ptNO n){

    ptPESSOA pes = (ptPESSOA) n->inf;
    printf("\nNome: %s", pes->nome);
    printf("\nIdade (anos): %d", pes->idade);
    printf("\nPeso (quilos): %.2f", pes->peso);
    printf("\nAltura (metros): %.2f", pes->altura);
}
void consulta_nos_arvore(ptARVORE A){
    if(!A) return "NAO EXISTE ARVORE";
    if(!A->raiz) return "ARVORE VAZIA";
    cons_nivel(A->raiz);
}
int cons_nivel (ptNO n){

    int nivel = 1;
    if(!n)return;

    printf("\n\nNIVEL: %d", nivel);
    mostrar_no(n);
    nos_arvore(n->dir, nivel+1);
    nos_arvore(n->esq, nivel+1);
}
void nos_arvore (ptNO n, int nivel){

    if(!n) return 0;

    printf("\n\nNIVEL: %d", nivel);
    mostrar_no(n);
    nos_arvore(n->dir, nivel+1);
    nos_arvore(n->esq, nivel+1);
}

 

Edited by thoga31
GeSHi

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.