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![]()







Répondre avec citation




) mais c'est la premiere fois que je vois cette facon d'écrire un code, qu'est ce que ca veut dire avec des if et des else ?
Partager