terça-feira, 21 de agosto de 2007

Classe Nó

/*Segue um exemplo de classe nó */

// este eh somente um prototipo para classe no

class no;

// usado no typedef a seguir.

typedef no *ptrno; // definindo um tipo ponteiro para no

/* classe no */

class no{

//atributos da classe no

private:

int valor;

ptrno esq, dir;

public:

/* inicializa o noh com valor NULL (nulo) para nao pegar lico de memoria */

no() {valor=0; esq=NULL; dir=NULL;}

no(int i) {valor=i; esq=NULL; dir=NULL;}

//metodos para inserção de dados no nó

void setValor(int i) {valor=i;}

void setEsq(ptrno e) {esq=e;}

void setDir(ptrno d) {dir=d;}

//metodos para leitura de dados no nó

int getValor() {return valor;}

ptrno getEsq() {return esq;}

ptrno getDir() {return dir;}

};

Arvore

Arvores são estruturas de dados organizados de forma hierarquia, ele é composta de dados chamados nó. A imagem mostra um exemplo de de arvore

O nó A é chamado raiz por ser o início da arvore, os nos B, C, E, F são chamados de galhos e os nos D, G, H, I são chamados folhas por serem terminações de cada ramificação.

Numa arvore binária os nos se dividem em ate duas ramificações, a imagem acima é uma exemplo de arvore binária. O nó é constituído basicamente de 3 partes: o valor que o nó ira guardar e 2 ponteiros uma para o nó da esquerda e o outro para o nó da direita.

segunda-feira, 13 de agosto de 2007

Exercício proposto

\*Tentei desenvolver alguns metodos, não testei nenhum, se alguem puder dra uma força, agradeço...*/

Mostre_pre(raiz)
{
if(raiz=!NULL)
{
cout<getValor();
Mostre_pre(raiz-getEsq());
Mostre_pre(raiz-getDir());
}
}

Mostre_pos(raiz)
{
if(raiz=!NULL)
{
Mostre_pre(raiz-getEsq());
Mostre_pre(raiz-getDir());
cout<getValor();
}
}

Mostre_centro(raiz)
{
if(raiz=!NULL)
{
Mostre_pre(raiz-getEsq());
cout<getValor();
Mostre_pre(raiz-getDir());
}
}
//1
Max(raiz)
{
if(raiz!=NULL)
{
int max = raiz->getValor();
Max(raiz->getDir());
}
return max;
}

//2
Min(raiz)
{
if(raiz!=NULL)
{
int min = raiz->getValor();
Max(raiz->getEsq());
}
return min;
}

//3
Quant(raiz)
{
int cont=1;
if(raiz=!NULL)
{
Quant(raiz->getEsq());
Quant(raiz->getDir());
}
cont++;
return cont;
}


//4
Altura(raiz)
{
int cont=0;
if(raiz!=NUll)
Quant(raiz->getEsq());
else
Quant(raiz->getDir());

cont++;
return cont;
}

Class Btree

// Abordagem apresentada em sala de aula

class btree {
private:
ptrno raiz;
public:
btree() { raiz=NULL;}
void push(int);
}
void btree::push(int v){
push(raiz, v);
}
void btree::(ptrno & v, int v)
{
node aux;
if(v==NULL){
v=new (node);
v->setValor(v);
v->setEsq(NULL);
v->setDir(NULL);
}

else if((v->getValor()){
aux=v->getDir();
push(aux,v);
v->setDir(aux);
}

else{
aux=v->getEsq();
push(aux,v);
v->setEsq(aux);
}
}