Salut !
j'ai un probleme avec le principe de la récursion, ca me parait pas du tout naturel dans ma tete mais il se trouve que j'en ai besoin, j'aimerai donc que vous m'aidiez a comprendre ! J'implémente un arbre binaire de recherche et je cherche a compter le nombre de noeuds :
il y a ci dessus ce que j'ai fait: j'ai d'abord une fonction ajout en récursif qui je crois , marche, mais nbNoeuds() ne fonctionnent pas très bien, je n'ai pas toujoursle bon résultat. J'avoue que je l'ai fait un peu au pif car je ne comprends pas completement le principe de la récursion !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 public class ArbreBinRech { private int val; private ArbreBinRech p; private ArbreBinRech g; public ArbreBinRech(int val) { this.val = val; } public void ajout(int e) { if(this == null) return; if(e < this.val && this.p != null) { this.p.ajout(e); } ArbreBinRech a = new ArbreBinRech(e); this.setP(a); if(e > this.val && this.g != null) { this.g.ajout(e); } this.setG(a); } public int nbNoeuds() { if(this == null) return 0; else if(this.p == null) return 1; else if(this.g == null) return 1; return this.p.nbNoeuds() + this.g.nbNoeuds() + 1; }
merci de votre aide
Partager