Arvore Binaria de Busca

3 respostas
wesleysilva

Ola galera implementei um metodo Pesquisar de uma arvore binaria de busca mas esta com um erro qndo pesquiso um valor q nao existe nao mostra nada,
olhem meu codigo, deveria mostra uma mensagem mas nao estou conseguindo oque esta errado no meu codigo??

public boolean pesquisar(No r, int valor) {
		boolean achou = false;
		try {
			if (r != null) {
				pesquisar(r.esq, valor);
				if (r.valor == valor) {
					System.out.println("\n" + "Valor Encontrado: " + r.valor);
					achou = true;
				}
				pesquisar(r.dir, valor);

			}
		} catch (Exception e) {
			System.out.println("Valor Invalido" + e);

		}
		return achou;

	}

3 Respostas

asandrob

Como assim, não mostra nada?
A mensagem Valor Inválido XXXXXX, só vai aparecer se der algum Exception, caso contrario vai sempre retornar false ou true.

S

Uma das principais vantagens das checked-exceptions em java é poder focar em algo que se quer tratar.
Exception é mt genérica que tal usar um NullPointerException e tentar algo assim:

public boolean pesquisar(No r, int valor) {  
        boolean achou = false;  
        try {  
            pesquisar(r.esq, valor);  
            if (r.valor == valor) {  
                System.out.println("\n" + "Valor Encontrado: " + r.valor);  
                achou = true;  
            }  
            pesquisar(r.dir, valor);  
        } catch (NullPointerException e) {  
            System.out.println("Valor Invalido " + e);  
  
        }  
        return achou;  
  
    }

Sobre exceptions: http://blog.caelum.com.br/lidando-com-exceptions/
Espero ter ajudado.

E

Hum… se seu método “pesquisar” retorna true ou false, por que é que você não checa o retorno de “pesquisar” dentro do método “pesquisar”?

pesquisar(r.esq, valor);  --> se retornar true, não precisa procurar no ramo direito, não? 
                if (r.valor == valor) {  
                    System.out.println("\n" + "Valor Encontrado: " + r.valor);  
                    achou = true;  
                }  
                pesquisar(r.dir, valor);
Criado 17 de maio de 2012
Ultima resposta 17 de mai. de 2012
Respostas 3
Participantes 4