Arvore Binária

3 respostas
R

Boa tarde Pessoal.
preciso entregar de ajuda para desenvolver um trabalho de estagio… podem me ajudar? não tenho muita experiencia com java

Implementar um programa que:

  1. Gere uma árvore binária de busca, ou seja, uma árvore binária de ordenação,
    contendo as seguintes informações sobre alunos de uma disciplina do curso de
    Sistemas de Informações:
    . Nome do aluno
    . Número do aluno
    . Turma (C1 ou C2)
    . Nota Final
    O campo número (pode-se considerar um inteiro) é o que define a posição de um
    registro dentro da árvore.
  • a árvore não insere elementos repetidos.
  1. Apresente um menu com as seguintes opções:
    . Inserir novos alunos na árvore;
    . Buscar por um determinado registro na árvore, sendo o número do aluno a
    chave de busca; caso o número seja localizado, imprimir as informações
    contidas no registro; caso contrário, cadastrá-lo na árvore;
    . Exibir todos os registros com os números dos alunos em ordem crescente
    (método recursivo);
    . Exibir todos os nomes e respectivos números dos alunos que pertencem a
    uma dada turma, percorrendo-a na pré-ordem (método recursivo);
    . Exibir todos os nomes e respectivos números dos alunos aprovados,
    percorrendo-a na pos-ordem (método recursivo);
    . Imprimir a quantidade de alunos da árvore, percorrendo-a na in-ordem
    (método recursivo);
    . Imprimir a quantidade de alunos reprovados, percorrendo a árvore na inordem
    (método recursivo);
    . Dado o número de um aluno que desistiu do curso, excluí-lo da árvore;
    imprimir uma mensagem com o nome do aluno e a turma à qual ele pertencia.

3 Respostas

R

rafabob:
Boa tarde Pessoal.
preciso entregar de ajuda para desenvolver um trabalho de estagio… podem me ajudar? não tenho muita experiencia com java

Implementar um programa que:

  1. Gere uma árvore binária de busca, ou seja, uma árvore binária de ordenação,
    contendo as seguintes informações sobre alunos de uma disciplina do curso de
    Sistemas de Informações:
    . Nome do aluno
    . Número do aluno
    . Turma (C1 ou C2)
    . Nota Final
    O campo número (pode-se considerar um inteiro) é o que define a posição de um
    registro dentro da árvore.
  • a árvore não insere elementos repetidos.
  1. Apresente um menu com as seguintes opções:
    . Inserir novos alunos na árvore;
    . Buscar por um determinado registro na árvore, sendo o número do aluno a
    chave de busca; caso o número seja localizado, imprimir as informações
    contidas no registro; caso contrário, cadastrá-lo na árvore;
    . Exibir todos os registros com os números dos alunos em ordem crescente
    (método recursivo);
    . Exibir todos os nomes e respectivos números dos alunos que pertencem a
    uma dada turma, percorrendo-a na pré-ordem (método recursivo);
    . Exibir todos os nomes e respectivos números dos alunos aprovados,
    percorrendo-a na pos-ordem (método recursivo);
    . Imprimir a quantidade de alunos da árvore, percorrendo-a na in-ordem
    (método recursivo);
    . Imprimir a quantidade de alunos reprovados, percorrendo a árvore na inordem
    (método recursivo);
    . Dado o número de um aluno que desistiu do curso, excluí-lo da árvore;
    imprimir uma mensagem com o nome do aluno e a turma à qual ele pertencia.

alguem pode me ajudar?

pmlm

Claro que sim… assim que tu colocares as tuas dúvidas.

R

Preciso implementar um programa em java conforme descrito acima…
tenho esta classe ja pronta e gostaria da ajuda de vocês para criar o “class Main” com os menus propostos.

public class ArvoreBinaria {

private No raiz;

private ArvoreBinaria arvoreEsquerda;

private ArvoreBinaria arvoreDireita;
public ArvoreBinaria() { }

public ArvoreBinaria getArvoreDireita() {
    return arvoreDireita;
}

public void setArvoreDireita(ArvoreBinaria arvoreDireita) {
    this.arvoreDireita = arvoreDireita;
}

public ArvoreBinaria getArvoreEsquerda() {
    return arvoreEsquerda;
}

public void setArvoreEsquerda(ArvoreBinaria arvoreEsquerda) {
    this.arvoreEsquerda = arvoreEsquerda;
}

public No getRaiz() {
    return raiz;
}

public void setRaiz(No raiz) {
    this.raiz = raiz;
}

public void insereAluno(int matricula, String nome) {
    Aluno aluno = new Aluno(matricula, nome);
    No no = new No(aluno);
    inserir(no);
}

public void inserir(No no) {
    if (this.raiz == null) {
        this.raiz = no;
    } else {
        if (no.getAluno().getMatricula() > this.raiz.getAluno().getMatricula()) {
            if (this.arvoreDireita == null) {
                this.arvoreDireita = new ArvoreBinaria();
            }
            this.arvoreDireita.inserir(no);
        } else if (no.getAluno().getMatricula() < this.raiz.getAluno().getMatricula()) {
            if (this.arvoreEsquerda == null) {
                this.arvoreEsquerda = new ArvoreBinaria();
            }
            this.arvoreEsquerda.inserir(no);
        }
    }
}

public void percorrerInOrder() {
    if (this.raiz == null) {
       return;
    }

    if (this.arvoreEsquerda != null) {
        this.arvoreEsquerda.percorrerInOrder();
    }

    System.out.println("Matrícula: " + this.raiz.getAluno().getMatricula());
    System.out.println("Nome: " + this.raiz.getAluno().getNome());
    
    if (this.arvoreDireita != null) {
        this.arvoreDireita.percorrerInOrder();
    }
}

public void percorrerPreOrder() {
    if (this.raiz == null) {
       return;
    }

    System.out.println("Matrícula: " + this.raiz.getAluno().getMatricula());
    System.out.println("Nome: " + this.raiz.getAluno().getNome());

    if (this.arvoreEsquerda != null) {
        this.arvoreEsquerda.percorrerPreOrder();
    }

    if (this.arvoreDireita != null) {
        this.arvoreDireita.percorrerPreOrder();
    }
}

public void percorrerPostOrder() {
    if (this.raiz == null) {
       return;
    }

    if (this.arvoreEsquerda != null) {
        this.arvoreEsquerda.percorrerPostOrder();
    }

    if (this.arvoreDireita != null) {
        this.arvoreDireita.percorrerPostOrder();
    }

    System.out.println("Matrícula: " + this.raiz.getAluno().getMatricula());
    System.out.println("Nome: " + this.raiz.getAluno().getNome());
}

public Aluno busca(int matricula) {
    if (this.raiz == null) {
        return null;
    } else {
        if (matricula == this.raiz.getAluno().getMatricula()) {
            return this.raiz.getAluno();
        } else {
            if (matricula > this.raiz.getAluno().getMatricula()) {
                if (this.arvoreDireita == null) {
                    return null;
                }
                return this.arvoreDireita.busca(matricula);
            } else {
                if (this.arvoreEsquerda == null) {
                    return null;
                }
                return this.arvoreEsquerda.busca(matricula);
            }
        }
    }
}

public class No {
    private Aluno aluno;

    public No(Aluno aluno) {
        this.aluno = aluno;
    }

    public Aluno getAluno() {
        return aluno;
    }

    public void setAluno(Aluno aluno) {
        this.aluno = aluno;
    }
}

public class Aluno {
    private int matricula;
    private String nome;

    public Aluno(int mat, String nome) {
        this.matricula = mat;
        this.nome = nome;
    }

    public int getMatricula() {
        return matricula;
    }

    public void setMatricula(int mat) {
        this.matricula = mat;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
}

}

Criado 10 de abril de 2012
Ultima resposta 11 de abr. de 2012
Respostas 3
Participantes 2