J'ai une classe Person et je veux créer un arbre. Voici le contsructor pour la classe Person.Aide sur la récursivité d'arborescence
public Person(String name, int age, char gender, Person c1, Person c2)
c1 est l'enfant sur la gauche, et c2 est l'enfant sur la droite. Et donc dire que je crée trois personnes comme ceci:
Person c = new Person("Carl", 50, 'M', null, f);
Person b = new Person("Barbara", 52, 'F', d, e);
Person a = new Person("Adam", 75, 'M', b, c);
Alors là, vous dites que Adam est le nœud racine, et l'enfant gauche d'Adam est b, qui est Barbara et son droit c qui est Carl, et ainsi de suite.
Donc ce que je veux faire est d'écrire une méthode de comptage, qui compte le nombre d'enfants, y compris this
. Donc a.count() retournera 6 (si Person f n'a pas d'enfants).
Et voici le code que j'ai:
public int count() // total person count including this object
{
if(child1==null)
return 0; //I tried return 1 for this too didnt work
if (child2==null)
return 0; //also tried 1 for this
return 1+this.child1.count() +1+this.child2.count();
}
J'ai couru ceci sur papier à plusieurs reprises, et il devrait trouver le bon résultat, mais il est hors de quelques pour une raison quelconque quand je lance effectivement il.
Mais qu'est-ce que mon code fait mal? – Snowman
@fprime, votre code renvoie 0 si l'un des enfants est 'null'. Ceci est incorrect car vous ne comptez pas pour l'autre enfant, ou 'this'. – jjnguy
A l'origine j'avais si null retourner 1 pour les deux, et cela n'a pas fonctionné non plus, même si elle devrait avoir aussi bien. Pourquoi cela ne fonctionnerait-il pas? – Snowman