domingo, 15 de março de 2015

Árvore Binária

Árvores binárias são estruturas de dados adequadas para a representação de hierarquias. Composta por um conjunto de nós, onde existe um nó R (raiz) que contém zero ou mais subárvores, cujas ráizes são ligadas diretamente a R.

A raiz se liga a um ou mais elementos e cada um destes forma uma nova subárvore. Esses elementos são seus galhos ou filhos.

Representação:


Implementação:

package arvoreBinariaDeBusca;

public class Arvore {

private No raiz;

public Arvore()
{
raiz = null;
}

void inserir (int dado)
{
raiz = insere(raiz, dado);
}

private No insere (No r, int x)
{
if (r == null)
{
No novo = new No(x);
return novo;
} else if (r.dado < x)
{
r.esq = insere (r.esq, x);
}
else if (r.dado > x)
{
r.dir = insere(r.dir, x);
}
return r;
}

public void mostrar() //Recursivo está no caderno
{
System.out.println("Pre Ordem");
mostrarPreOrdem(raiz);
System.out.println("\nIn Ordem");
mostrarInOrdem(raiz);
System.out.println("\nPos Ordem");
mostrarPosOrdem(raiz);
}

private void mostrarPreOrdem(No no)//Exibe os elementos da direita e depois os da esquerda
{
if (no != null)
{
System.out.print(no.dado + " ");
mostrarPreOrdem(no.dir);
mostrarPreOrdem(no.esq);
}
}

private void mostrarInOrdem(No no)//Exibe os elementos da direita da raiz, volta para a raiz, exibe os elementos da esquerda dela, exibindo o da direita de cada folha
{
if (no != null)
{
mostrarPreOrdem(no.esq);
System.out.print(no.dado + " ");
mostrarPreOrdem(no.dir);
}
}

private void mostrarPosOrdem(No no)//Exibe os elementos da direita e depois os da esquerda
{
if (no != null)
{
mostrarPreOrdem(no.esq);
mostrarPreOrdem(no.dir);
System.out.print(no.dado + " ");
}
}

}

Nenhum comentário:

Postar um comentário