Supprime min

Fermé
helloword95 - 2 sept. 2018 à 10:23
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 2 sept. 2018 à 10:35
Bonjour,

J'essaye de supprimer l'entier minimum dans un ABR mais je n'y arrive pas. Ce code me donne un NullPointerException..

	private int supprimeMin(NoeudEntier noeud) {
		if (noeud.gauche != null && noeud.gauche.gauche == null && noeud.gauche.droit != null) {
			int min = noeud.gauche.entier;
			noeud.gauche = noeud.gauche.droit;
			return min;
		}
		
		if (noeud.gauche != null && noeud.gauche.gauche == null && noeud.gauche.droit == null) {
			int min = noeud.gauche.entier;
			noeud.gauche = null;
			return min;
		}
		return supprimeMin(noeud.gauche);
	}


Votre aide me serait grandement utile.

Merci


1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
2 sept. 2018 à 10:35
Bonjour,

Prenons le cas noeud.gauche == null, tu ne rentres pas dans tes if, donc tu fais supprimeMin(noeud.gauche)

Au deuxième appel, tu as donc noeud == null, d'où le NullPointerException sur noeud.gauche

Remarque : c'est très certainement une erreur de travailler avec noeud.gauche.gauche et noeud.gauche.droit, tu vas trop loin dans ton analyse, il faudrait se limiter à noeud, noeud.gauche et noeud.droit
1