Ir ao conteúdo

Posts recomendados

Postado

Escreva um programa que implemente uma árvore binária de busca, tal que, cada nó deverá armazenar uma palavra.

Insira 5 palavras aleatórias e ao final exiba o conteúdo de todas as folhas da árvore resultante.

 

Também implemente um método para realizar buscar por palavras e excluir palavras desta árvore.

  • Amei 1
Postado

@MrBatman      você pode ver nesse links  , sobre  essas Arvores Binárias , 

https://www.clubedohardware.com.br/forums/topic/1576099-código-em-c-arvore-binária/#comment-8317388

e nesse também 

https://www.bing.com/videos/search?q=como+é+uma+arvore+binaria+no+c&docid=608015430549600179&mid=D313D27FC84F4134A989D313D27FC84F4134A989&view=detail&FORM=VIRE

e depois Que voCê fizer hum código sobre esse exercício , poste ele aqui e ajudaremos .

  • Curtir 1
Postado

Um árvore binária tem sentido quando os dados podem ser considerados "maiores", "menores" e iguais entre si.

 

A ideia é a seguinte: se um elemento for menor do que o elemento atual, ele tem que ir parar em algum lugar à esquerda do elemento atual. Se o elemento for menor do que o elemento atual, ele tem que ir parar à direita do elemento atual (como é de praxe, 1, 2, 3, 4, ... os números menores da sequência estão à esquerda dos maiores, e vice-versa).

 

Cada parte da estrutura é um "nó". Um nó contem o dado, a dois ponteiros, um pro nó a esquerda (onde estão todos os nós cujos dados menores que o do dado atual) e um nó a direita (onde estão todos os nós cujos dados são maiores que o atual).

 

#include <string_view>
#include <string>
using std::string_view; using std::string;

class TreeNode
{
  private:
  	string _datum;
  	TreeNode* _left;
  	TreeNode* _right;
  
  public:
  	TreeNode(string_view datum) : _datum{ datum }, _left{ nullptr }, _right { nullptr }
  	{ }
  
  	~TreeNode()
    {
      delete _left;
      delete _right;
    }
  
  	/* note que o metodo abaixo retorna uma cópia de _datum, invocando implicitamente o copy constructor std::string. Isso enforça 		 * o princíptio do encapsulamento, não deixando o código chamador mudar o que não devia. Se _datum é mudado, a árvore inteira
     * pode ter seu estado interno comprometido, caso o chamador mude _datum pra um elemento que viole o axioma de que "todos os
     * dados menores que este aqui estão à esquerda, enquanto todos os maiores estão à direita. */
  	std::string getDatum() const { return _datum; }
  	
  	//missing a lot of stuff, but that's the basic class. If you run into any problem tell me.
};

 

 

Postado

Perdão. A formatação ficou o horrível, e eu troquei do português pro inglês na última linha de comentário (deixei  o tempo máximo de edição passar). Eu disse que está faltando um monte de coisa, mas essa é a classe básica. Qualquer dúvida, pergunte.

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!