Árvore bimária

3 respostas
Fragata

Estou com um problema: preciso implementar, no padrão composite, uma arvore binária que guarde nomes e matrículas de um arquivo .txt, eu não estou sabendo principalmente como se indexa um arquivo .txt a uma classe, já me disseram que eu tenho que pegar esse arquivo e colocar em um vetor, etc. mas eu não sei como se faz isso, queria saber se tem um método Java para indexar arquivos a uma classe/ vetor.

3 Respostas

L

Bom, não consegui entender muito bem o que você quer, mas me parece que o que você precisa fazer é criar um objeto Nó cujos atributos serão nome e matricula pra poder montar a árvore. Se for uma árvore binária de busca, você vai precisar de uma certa ordem para organizar os elementos. Qualquer busca no Google por “árvore binária de busca” te da um exemplo de como fazer isso, provavelmente a matrícula ser a chave.

Não entendi essa parte de indexar arquivo .txt a uma classe, por isso que eu não sei se eu entendi errado o que vc quer. A princípio o que eu entendi é que vc precisa ler linha por linha desse arquivo e ir criando os nós da sua árvore. A classe Scanner tem um construtor que recebe como parâmetro a leitura de um arquivo, daí é só ir dando nextLine() e lendo linha por linha.

Não sei se era isso que vc queria.

Fragata

E qual é exatamente a linha desse código? E onde eu coloco isso? Na classe Component onde eu defino meu nó, ou na classe Teste?

Focao

Brow... se é arvore tem que ser um método recursivo..

senão é tosco...

public String getArvore(){

		StringBuffer sb = new StringBuffer();
		String texto = "seu texto"";
		try{
			sb.append("['");
			sb.append(montaNos());
			sb.append("]");	
			return sb.toString();
		}catch(Exception e){
			throw new RuntimeException(e);
		}
	}
Depois cria os nós da arvore..
protected String montaNos(){
		
		StringBuffer sb = new StringBuffer();
		getNosFilhos("valor do arquivo txt", 0, /*nosADesonsiderar,*/ sb);
		return sb.toString();
	}
Depois a parte mais bonita..... hehe a recursividade com busca em profundidade..
private String getNosFilhos(String itemArquioTXT, int index, StringBuffer sb){
		
		int n = seuArquivo.size();
		for(int i = index; i < n; i++){
			
			SeuDTO dto= (SeuDTO )seuArquivo.get(i);
			if(seuArquivo.getSeuId() != null && empresa.getSeuId().equals(itemArquioTXT)){
				getNosFilhos(seuArquivo.getSeuId() , i+1, /*nosADesconsiderar,*/ sb);
				sb.append("],");
			}
		}
		return sb.toString();
	}

a maior dificuldade é debugar...

Criado 11 de novembro de 2008
Ultima resposta 13 de nov. de 2008
Respostas 3
Participantes 3