Ir ao conteúdo
  • Cadastre-se

Menor valor em uma árvore desordenada


Posts recomendados

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

}

}

}

 

Link para o comentário
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 ...

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...