Sucessor ou Pai.. ARVORE.. não to conseguindo

3 respostas
D

Pessoal to tentando implementar um busca_pai aqui pra achar um pai de um determinado nó… mais eu até consegui algo… Quando eu vou procurar o pai do “G” ele da erro…

Arvore:

--------A-----
-----B----C–
—D-E-----G–
–F-------------

private Node busca_pai(char dado, Node no){ 
     	Node pai = no;
             	if (no != null) {
     		if ((no.getEloEsquerdo() != null) || (no.getEloDireito() != null)) {
     			if ((no.getEloEsquerdo().getDado() == dado) ||
     					(no.getEloDireito().getDado() == dado)) {
     				pai = no;
     			} else {
         			if (no.getEloEsquerdo().getDado() != dado) {
         				pai = busca_pai(dado, no.getEloEsquerdo());	
         			if (no.getEloDireito().getDado() != dado) {
         					pai = busca_pai(dado, no.getEloDireito());	
         				}
             		}
     			     		}
     	}
        }
     	return pai;
     }

alguma sugestão?

3 Respostas

D

Qual é o tipo de erro?
Veja que um erro pode ocorrer é uma exceção NullPointException. Isso pq vc deve separar a verificação se o elo esquerdo ou o direito são nulos. Por exemplo, se o elo esquerdo for nulo e o direito não, o corpo do if será executado. Porém, quando vc for fazer a verificacao do próximo if, uma exceção será lançada, já que vc está tentando verificar o valor do dado de um elo nulo.

Pode ser que seu problema seja outro e vc não tenha percebido a exceção acima, caso seu caso de teste oculte isso.
Se não for essa exceção que esteja ocorrendo, explique melhor…

Abraços :-o

andredeividi

Uma vez fiz um sistema para controlar uma piramide de relacionamentos
e resolvi no sql.

abraço

A

private Node busca_pai(char dado, Node no) { // if (pesquisa(dado) == null) // return null; Node pai = no; if (no != null) { if ((no.getEloEsquerdo() != null) && (no.getEloDireito() != null)) { if ((no.getEloDireito().getDado() == dado) || no.getEloEsquerdo().getDado() == dado) { pai = no; } else { if (no.getDado() > dado) pai = busca_pai(dado, no.getEloEsquerdo()); else pai = busca_pai(dado, no.getEloDireito()); } } else if (no.getEloEsquerdo() == null) { if (no.getEloDireito().getDado() == dado) { pai = no; } else { pai = busca_pai(dado, no.getEloDireito()); } } else if (no.getEloDireito() == null) { if (no.getEloEsquerdo().getDado() == dado) { pai = no; } else { pai = busca_pai(dado, no.getEloEsquerdo()); } } } return pai; }

Criado 29 de maio de 2007
Ultima resposta 29 de mai. de 2007
Respostas 3
Participantes 4