Oi pessoal tudo bom?
Será que alguem pode me ajudar com um problema de 0xC0000005: Access violation reading location?
É o seguinte, ele compila no Dev C++, porém da pau no primeiro segundo. O Código é grande e está separado em 3 arquivos : header.h , main.cpp e classes.cpp.
#include "header.h"
int main(){
Tree teste;
cout << teste.root()->get_valor();
fflush(stdin);
getchar();
return 0;
}
//MAIN ACIMA
#include "header.h"
bool Tree::Busca(int x, No* j){
if(j->get_valor()==x)
return true;
else if(j->get_valor()>x && j->get_esq()!=NULL)
Busca(x,j->get_esq());
else if(j->get_valor()<x && j->get_dir()!=NULL)
Busca(x,j->get_dir());
return false;
}
void Tree::Insere(int x, No* j){
No *p;
if(j==NULL){
p=new No();
p->set_valor(x);
j=p;
}
else if(j->get_valor()>x)
Insere(x,j->get_esq());
else if(j->get_valor()<x)
Insere(x,j->get_dir());
}
void Tree::Imprime(No* p){
if (p->get_esq()!=NULL)
Imprime(p->get_esq());
cout << p->get_valor()<< " ";
if (p->get_dir()!=NULL)
Imprime(p->get_dir());
}
// FUNCOES DAS CLASSES ACIMA
#include <iostream>
#include <cstdlib>
using namespace std;
class No{
private:
No *esq,*dir;
int valor;
public:
No(){
this->valor=0;
this->esq=NULL;
this->dir=NULL;
}
void set_esq(No* p){esq=p;}
void set_dir(No* p){dir=p;}
No* get_esq(){return esq;}
No* get_dir(){return dir;}
int get_valor(){return valor;}
void set_valor(int x){valor=x;}
};
class Tree{
private:
No* raiz;
public:
Tree(){
raiz=NULL;
}
No *root(){return raiz;}
bool Busca(int,No*);
void Insere(int,No*);
void Imprime(No*);
};
Acredito que o erro está no construtor No(), porém não sei onde…
Sou iniciante e desde já agradeço a paciência e a colaboração de vocês.
Obrigado !!
