2010-04-02 10 views
-2

J'ai besoin de savoir combien de valeurs paires sont contenues dans un arbre binaire.Java: compte les valeurs paires dans un arbre de recherche binaire récursivement

ceci est mon code.

private int countEven(BSTNode root){ 

if ((root == null)|| (root.value%2==1)) 
return 0; 

return 1+ countEven(root.left) + countEven(root.right); 


} 

cela je juste codé comme je n'ai pas un moyen de tester cela. Je ne suis pas en mesure de le tester pour le moment mais j'ai tellement besoin d'une réponse. toute aide est grandement appréciée.

+0

pourquoi ne pas l'avoir testé? Tu ne peux pas écrire un test? – Fortega

+6

Que faites-vous en classe en passant un examen? – Mark

Répondre

1

S'il y a un nœud avec une valeur impaire contenant des valeurs sous-noeuds même, les sous-noeuds ne seront pas comptés dans votre code. Petite amélioration ci-dessous.

private int countEven(BSTNode root){ 

    if (root == null) 
    return 0; 

    int val = (root.value%2==1) ? 0 : 1; 

    return val + countEven(root.left) + countEven(root.right); 


} 
+0

Salut Merci beaucoup. Merci d'avoir aidé à comprendre ce qui manque. – sanjan

0
private int countEven(BSTNode root) { 
    if (root == null) 
     return 0; 

    int n = countEven(root.left) + countEven(root.right); 
    if(root.value % 2 == 0) 
     return n + 1; 
    else 
     return n; 
} 
+2

Stack Overflow: où les programmeurs feront vos devoirs sans poser de questions. – danben

+0

hm, je ne suis pas d'accord avec le -1 ... L'affiche a essayé quelque chose lui-même qui n'a pas fonctionné. Maintenant, il a une meilleure solution, donc il sera capable de comparer et de voir ce qu'il a fait de mal. Donc, il aura certainement appris quelque chose ... – Fortega

+0

Oui, vous pourriez dire que pour chaque cas où quelqu'un répond à une question de devoirs avec une solution entièrement écrite. Le revers de la médaille est qu'ils peuvent tout simplement copier et apprendre rien, sauf qu'ils peuvent venir ici pour faire leurs devoirs gratuitement. – danben