Ir ao conteúdo
  • Cadastre-se
Guest Erica

C++

Recommended Posts

Guest Erica

<font color='#0000FF'>???

Oi pessoal preciso de alguém que saiba muito de C++ para me ajudar na proposição abaixo

Tchau !!!

9 - Escreva um algoritmo que encontre o menor e o maior valor armazenados em uma árvore binária de pesquisa já construída.

Compartilhar este post


Link para o post
Compartilhar em outros sites

<font color='#000080'>Podem me chamar de chato, mas isso tá parecendo mais um desses posts de alguém que faltou à aula e tá querendo que alguém do fórum faça o trabalho por ele...   :Z

Compartilhar este post


Link para o post
Compartilhar em outros sites
Guest newfabyo

<font color='#000000'>:P  O q é uma árvore binária?! Faltei nessa aula hahahahaha

Compartilhar este post


Link para o post
Compartilhar em outros sites
Guest Waglim
Postado Originalmente por Erica@25 Out. 2002,16:38

<font color='#000000'>???

Oi pessoal preciso de alguém que saiba muito de C++ para me ajudar na proposição abaixo

Tchau !!!

9 - Escreva um algoritmo que encontre o menor e o maior valor armazenados em uma árvore binária de pesquisa já construída.

<font color='#000000'>e lá vamos nos de novo,

desta vez vai o codigo completo...

(pelo visto os professores andam meio sem imaginação)

----------------------------------

#include <stdlib.h>

#include <stdio.h>

#include<conio.h>

struct arvore {

char letra;

struct arvore *esquerdo;

struct arvore *direito;

};

struct arvore *nodo;

struct arvore *adiciona(struct arvore *nodo, struct arvore *novo, char letra);

void imprime (struct arvore *nodo, int linha);

int altura (struct arvore *nodo);

char LetraMenor(struct arvore *nodo);

char LetraMaior(struct arvore *nodo);

struct arvore *pesquisa(struct arvore *nodo, char letra);

void main()

{

clrscr();

char letra[80], procura, menor, maior;

nodo=NULL;

do {

printf("\n Entre uma letra : ");

gets(letra);

if(!*letra)

break;

if(!nodo)

nodo = adiciona(nodo, nodo, *letra);

else

adiciona(nodo, nodo, *letra);

}while(*letra);

imprime(nodo, NULL);

printf("\n A altura é: %d",altura(nodo));

printf("\n O maior elemento é: %c",maior=LetraMaior(nodo));

printf("\n O menor elemento é: %c",menor=LetraMenor(nodo));

printf("\n Digite uma letra a ser encontrada : ");

scanf("%c",&procura);

if(pesquisa(nodo,procura))

printf("\n O elemento foi encontrado!!!");

else

printf("\n O elemento não foi encontrado!!!");

getch();

}

struct arvore *pesquisa(struct arvore *nodo, char letra)

{

if (nodo == NULL || nodo->letra == letra)

  return (nodo);

if (nodo->letra > letra)

  return (pesquisa (nodo->esquerdo, letra));

else

  return (pesquisa (nodo->direito, letra));

}

char LetraMaior(struct arvore *nodo)

{

if(!nodo->direito)

return(nodo->letra);

LetraMaior(nodo->direito);

}

char LetraMenor(struct arvore *nodo)

{

if(!nodo->esquerdo)

return(nodo->letra);

LetraMenor(nodo->esquerdo);

}

struct arvore *adiciona(struct arvore *nodo, struct arvore *novo, char letra)

{

if(!novo){

novo = (struct arvore *) malloc(sizeof(struct arvore));

if(!novo) {

clrscr();

printf("\n k-bo a memoria, você precisa comprar mais se quiser adicionar esse nodo\n");

getch();

exit(0);

}

novo->esquerdo = NULL;

novo->direito = NULL;

novo->letra = letra;

if(!nodo)

return novo;

if(letra<nodo->letra)

nodo->esquerdo = novo;

else

nodo->direito = novo;

return novo;

}

if(letra<novo->letra)

adiciona(novo, novo->esquerdo, letra);

else

adiciona(novo, novo->direito, letra);

}

void imprime (struct arvore *nodo, int linha)

{

if(!nodo) return;

imprime(nodo->esquerdo, linha+1);

for(int i=0; i<linha; ++i)

printf(" ");

printf("%c\n", nodo->letra);

imprime(nodo->direito, linha+1);

}

int altura (struct arvore *nodo)

{

if (nodo == NULL)

return (-1);

else{

int he = altura (nodo->esquerdo);

int hd = altura (nodo->direito);

if (he < hd)

return (hd + 1);

else

return (he + 1);

      }

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×