SNo * BuscaPontoInsercao(SNo * x,int k)
{ if(k>x->chave) { if(x->FD == NULL) { return(x); } else { return(BuscaPontoInsercao(x->FD,k)); } } else { if(x->FE == NULL) { return(x); } else { return(BuscaPontoInsercao(x->FE,k)); } } } |
void Insere(int k)
{ SNo * Lugar; SNo * NovoNo; NovoNo = new SNo; NovoNo->chave = k;
|
SNo * Busca(SNo * x,int k)
{ if(x==NULL) return(NULL); /* k nao esta na arvore */ if(x->chave == k) return(x); else { if(k<x->chave) return(Busca(x->FE,k)); else return(Busca(x->FD,k)); } } SNo * BuscaPai(SNo * Pai, SNo * Filho)
void Remove(int k)
SNo * Menor(SNo * x)
SNo * Maior(SNo * x)
|
void RemoveNo(SNo * x)
{ SNo * Pai; SNo * y; Pai = BuscaPai(Raiz,x);
|
void MostraArvore()
{
PreOrdem(Raiz,1,80);
}
void PreOrdem(SNo * x,int i,int f)
{
if(x!=NULL)
{
Espacos(i+((f-i)/2));
printf("%d\n",x->chave);
PreOrdem(x->FE,i,i+((f-i)/2));
PreOrdem(x->FD,i+((f-i)/2),f);
}
}
void Espacos(int t)
{
int i;
for(i=1;i<=t;++i) printf(" ");
}