Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package br.pucpr.ed;
- /**
- * Nó da árvore binária
- *
- * @author s.luis
- */
- public class NoAB<E> {
- private E dado;
- private NoAB<E> esquerda, direita;
- /**
- * Construtor
- *
- * @param d
- * O valor do dado que será armazenado no nó
- */
- public NoAB(E d) {
- dado = d;
- }
- /**
- * Adciona um novo nó a esquerda da instância considerada
- *
- * @param d
- * Valor a ser guardado no novo nó
- * @throws Exception
- * Erro, já existe dado na esquerda
- */
- public NoAB<E> adcionaEsquerda(E d) throws Exception {
- if (esquerda != null)
- throw new Exception("Erro, já existe dado na esq");
- // criando o novo nó
- NoAB<E> novoNo = new NoAB<E>(d);
- // guardando a referência do mesmo á esquerda do nó
- esquerda = novoNo;
- return novoNo;
- }
- /**
- * Adciona um novo nó a direita da instância considerada
- *
- * @param d
- * Valor a ser guardado no novo nó
- * @throws Exception
- * Erro, já existe dado na esquerda
- */
- public NoAB<E> adcionaDireita(E d) throws Exception {
- if (direita != null)
- throw new Exception("Erro, já existe dado na dir");
- // criando o novo nó
- NoAB<E> novoNo = new NoAB<E>(d);
- // guardando a referência do mesmo á direita do nó
- direita = novoNo;
- return novoNo;
- }
- public E getDado() {
- return dado;
- }
- public void setDado(E dado) {
- this.dado = dado;
- }
- public NoAB<E> getEsquerda() {
- return esquerda;
- }
- public void setEsquerda(NoAB<E> esquerda) {
- this.esquerda = esquerda;
- }
- public NoAB<E> getDireita() {
- return direita;
- }
- public void setDireita(NoAB<E> direita) {
- this.direita = direita;
- }
- }
- package br.pucpr;
- import br.pucpr.ed.NoAB;
- public class MainAB {
- public static void main(String[] args) throws Exception {
- NoAB<Integer> raiz = new NoAB<Integer>(34);
- // inserindo os filhos
- // nó esquerdo raiz
- NoAB<Integer> no80 = raiz.adcionaEsquerda(80);
- no80.adcionaEsquerda(40);
- NoAB<Integer> no43 = no80.adcionaDireita(43);
- NoAB<Integer> no13 = no43.adcionaEsquerda(13);
- NoAB<Integer> no26 = no13.adcionaEsquerda(26);
- no26.adcionaDireita(90);
- no43.adcionaDireita(75);
- // nó direito raiz
- NoAB<Integer> no55 = raiz.adcionaDireita(55);
- NoAB<Integer> no5 = no55.adcionaDireita(5);
- no5.adcionaEsquerda(1);
- no5.adcionaDireita(17);
- System.out.println("Pre-Ordem");
- preOrdem(raiz);
- System.out.println("\nEm-Ordem");
- emOrdem(raiz);
- System.out.println("\nPós-Ordem");
- posOrdem(raiz);
- System.out.println("\n\nTerminou.");
- }
- /**
- * Pré-Ordem: tratar raiz, percorrer sae, percorrer sad
- * Neste exemplo utilizaremos tratar como sinônimo de imprimir
- */
- public static void preOrdem (NoAB<Integer> raiz){
- // condição de parada
- if(raiz == null)
- return;
- // 1) tratar raiz
- System.out.print(raiz.getDado() + ", ");
- // 2) percorrer sae
- preOrdem(raiz.getEsquerda());
- // 3) percorrer sad
- preOrdem(raiz.getDireita());
- }
- /**
- * Em-Ordem: percorrer sae, tratar raiz, percorrer sad
- * Neste exemplo utilizaremos tratar como sinônimo de imprimir
- */
- public static void emOrdem (NoAB<Integer> raiz){
- // condição de parada
- if(raiz == null)
- return;
- // 1) percorrer sae
- emOrdem(raiz.getEsquerda());
- // 2) tratar raiz
- System.out.print(raiz.getDado() + ", ");
- // 3) percorrer sad
- emOrdem(raiz.getDireita());
- }
- /**
- * Pós-Ordem: percorrer sae, percorrer sad, tratar raiz
- * Neste exemplo utilizaremos tratar como sinônimo de imprimir
- */
- public static void posOrdem (NoAB<Integer> raiz){
- // condição de parada
- if(raiz == null)
- return;
- // 1) percorrer sae
- posOrdem(raiz.getEsquerda());
- // 2) percorrer sad
- posOrdem(raiz.getDireita());
- // 3) tratar raiz
- System.out.print(raiz.getDado() + ", ");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement