TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Criar uma Estrutura de Arvore Binaria e Uma Função de Busca em Largura para Árvores Binárias

Por:   •  17/3/2020  •  Trabalho acadêmico  •  1.026 Palavras (5 Páginas)  •  185 Visualizações

Página 1 de 5

Utilizando sua linguagem de programação de preferência, desenvolva:

i) A estrutura referente a um nó de uma árvore binária contendo três variáveis: o valor do nó, a referência para o filho esquerdo e a referência para o filho direito.

ii) Uma função "Criar nó" que receba um valor inteiro e instancie (crie) e retorne um nó com esse valor.

iii) Um a função de busca em largura para árvores binárias do tipo desenvolvido em (i).

iv) No seu programa, crie uma árvore com mais de 8 nós e aplique a busca em largura desenvolvida no item (iii).

LINGUAGEM C++

#include

#include

#include

using namespace std;

class ArvoreB {

    protected:

        struct no {

            no *esquerda;

            no *direita;

            int v;

            no() {}

            no(

               int v,

               no *l = NULL,

               no *r = NULL)

             : esquerda(l), direita(r), v(v) {}

    };

    no* raiz_;

    size_t numElementos_;

public:

    ArvoreB(): raiz_(NULL), numElementos_(0) {}

    void inserir(int v) {

        no *novoNo = new no(v);

            no *pai = NULL;

        if(!raiz_) {

            raiz_ = novoNo;

            ++numElementos_;

            return;

        }

        no* actual = raiz_;

        while(actual) {

            pai = actual;

            actual = novoNo->v > actual->v ? actual->direita : actual->esquerda;

        }

        if(novoNo->v < pai->v) {

            pai->esquerda = novoNo;

        }

        else {

            pai->direita = novoNo;

        }

        ++numElementos_;

    }

    void inserir(std::vector v) {

        for(std::vector::iterator it = v.begin(); it != v.end(); ++it) {

            inserir(*it);

        }

    }

    void buscaLargura() {

        std::queue q;

        q.push(raiz_);

        while (q.size() > 0)

        {

            no* n = q.front();

            q.pop();

            std::cout << n->v << " ";

            if (n->esquerda !=NULL) {

                    q.push(n->esquerda);

            }

            if (n->direita !=NULL) {

                q.push(n->direita);

            }

        }

        std::cout << std::endl;

    }

    void mostraArvore() {

        std::queue nivelActual, nivelSeguinte;

...

Baixar como (para membros premium)  txt (3.2 Kb)   pdf (36.6 Kb)   docx (213 Kb)  
Continuar por mais 4 páginas »
Disponível apenas no TrabalhosGratuitos.com