Ir ao conteúdo
  • Cadastre-se

ABB - Arvore, Binaria de Busca


Say

Posts recomendados

Galera tô fazendo um trabalhin aqui e está faltando três funções pra terminar.

Tenho que criar uma arvore de busca e tal, tem funções como inserir, tirar monte de coisa.

Eu fiz tudo mas ta faltando uma 3 funçoes e todas elas sao parecidas. Ele me passa conjuntos como parametro, e eu tenho que fazer coisas, se eu tiver ajuda com uma eu faço o resto, então vamo lá:

struct No {

float chave_;

No* esq_;

No* dir_;

No(float chave, No* esq, No* dir);

};

class Conjunto {

// Dados privados.

private:

No* raiz_;

...

}

// Faz com que o conjunto corrente fique igual ao conjunto c

// passado como parametro.

void Atribuir(Conjunto& c);

esta função atribuir que tenho que fazer, eu ja apaguei a função antiga so preciso agora minha raiz apontar pra nova raiz do conjunto c, mas num ta dando certo ( Limpar();

raiz_= c.raiz_;

)

eu fiz isto mas num sei se esta certo.

Obrigado

Link para o comentário
Compartilhar em outros sites

Leia seu tópico e veja se mais alguém além de você vai conseguir entender:

"Eu fiz tudo mas ta faltando uma 3 funções e todas elas são parecidas. Ele me passa conjuntos como parametro, e eu tenho que fazer coisas, se eu tiver ajuda com uma eu faço o resto"

Ela passa conjunto e você faz coisas. :confused:

Link para o comentário
Compartilhar em outros sites

Perdoem-me, estava com pouquinho de pressa então fiz besteira, enfim, já resolvi o problema porém vou explicar melhor a pergunta e da a reposta para não ficar com o tópico perdido.

Estou implementando uma ABB (árvore binária de busca ), a função na qual tive duvida pede para que o programador atribua a arvore atual uma arvore passada como parametro.

O problema é que este parametro é o endereço de memoria da arvore que voce quer copiar e voce não tem como copiar a raiz desta arvore pois a raiz é privada. Então não a como ter o valor do primeiro nó, estão quanto percorrê-la.

//conjunto que cria a arvore e o nó

struct No {
float chave_;
No* esq_;
No* dir_;
No(float chave, No* esq, No* dir);
};

class Conjunto {
// Dados privados.
private:
No* raiz_;

Perceberám ?? A raiz é privada.

O que fazer ??

Infelizmente teremos que implementar dentro do private uma função "AtribuirPrivado", pois esta sim terá acesso a raiz_ e a função Atribuir chamará aquela.

 void AtribuirPrivado(No* c, No* d) { //No* c é o conjunto passado como parametro e
//No* d é o conjunto ja existente
if (c==NULL) {
d=NULL;
}
else {
d = new No(c->chave_,NULL, NULL);
AtribuirPrivado(c->dir_,d->esq_);
AtribuirPrivado(c->dir_,d->dir_);
}
}


void Conjunto::Atribuir(Conjunto& c) {
Limpar(); //Uma outra função que limpa a arvore atual
AtribuirPrivado(c.raiz_,raiz_); //Observe os parametros. O segredo esta aqui.
//sendo c uma classe eu posso acessar o valor da sua raiz daquela maneira
}

Link para o comentário
Compartilhar em outros sites

  • 8 meses depois...

Oi galera quem poder me ajudem awe rapidão.

To precisando fazer um programa em C no Cev C++,

1° formar 3 vetores de inteiros e fazer as seguintes alterações com os mesmos: 2º vetor ((A união com vetor B) com intersecção com o vetor C)

3º ((A intersecção com vetor B) com união com vetor C)

4º((A intersecção com vetor B) com intersecção com vetor C).

por favor galera me ajudem ai quem puder. agradeço desde já.

Link para o comentário
Compartilhar em outros sites

Say,

nao sei se entendi o que você quer mas vou dizer o que eu acho: Você quer criar uma struct ou class Arvore igual a uma outra existente? se for isso c++ já tem um constructor pronto para isso, seria o caso de Arvore(const &), é só chamara o construtor da nova classe e colocar a outra como parametro

exemplo:

class Base
{
private:
int a;
public:
int b;
Base()
{
this->a = 5;
this->b = 10;
}
void Mod()
{
this->a = 45; // valor privado
}
};

int main()
{
Base antiga;
antiga.Mod(); // a tem 45

Base nova(antiga);
// nova.a vale 45
return 0;
}

e Kakanhoto você precisa criar um tópico para o seu problema e tambem mostar o código de sua tentativa...

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!