Ir ao conteúdo
  • Cadastre-se
Felipe Ferreiraa

Menor valor em uma árvore desordenada

Recommended Posts

Boa tarde,

Estou estudando árvores, e tenho uma questão que tenho achar o menor valor em uma árvore DESORDENADA. Segue o código que inicializei, porém estou com dúvida na questão de achar o menor valor e além do que métodos de árvore são recursivos.
 

public int menorValor(Nodo raiz){

int menor = 0;

if(raiz != null){

if(raiz.data < menor){ //Essa parte, é um pouco sem nexo, porque se a árvore é desordenada, não é verificado desta forma

return menorValor(raiz.linke); // raiz a esquerda

}else{

return menorValor(raiz.linkd); //raiz a direita

}

}

}

 

Editado por DiF
Botão CODE <>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem ... vamos de inicio ... Se a árvore está desordenada, o melhor a se fazer é começar a comparação pelos itens que são folhas (ou seja, os itens mais internos da sua árvore) ...

public int menorValor(Nodo nodo){
	//Verifica se é um nó folha
	if (nodo.linkd == null && nodo.linke == null) {
		return nodo.data;
	}
	//Recupera o menor valor do nó da direita de forma recursiva
	int valorNodo = menorValor(nodo.linkd);
	
	//Verifica se o valor do nó da direita é menor que o valor do nó atual
	int menor = valorNodo < nodo.data ? valorNodo : nodo.data;
	
	//Recupera o menor valor do nó da esquerda de forma recursiva
	valorNodo = menorValor(nodo.linke);

	//Verifica se o valor do nó da direita é menor valor apurado anteriormente
	menor = valorNodo < menor ? valorNodo : menor;

	//retorna o menor valor
	return menor;
}

Com isso, ele vai executar Todas as recursivas do lado direito da raiz e encontrar o menor valor do lado direito ... depois ele executa todas as recursivas do lado esquerdo e verifica qual o menor valor ...

Uma dica que lhe dou sobre recursivas: Sempre pense em qual seria o melhor resultado primeiro ... no nosso caso é se a árvore só tivesse um único item ... com isso o menor valor era o próprio dado do nó raiz (motivo do if inicial) ... depois segundo melhor resultado ... ter mais um dado apenas, por exemplo, à direita ... e depois ter todos os dados ... Pensando nessa sequência fica um pouco mais fácil chegar a resultados com funções recursivas ...

Editado por psykotico

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×