2016-10-21 1 views
0

J'ai un arbre. Certains des noeuds de cet arbre ont une valeur. Je veux trouver les nœuds qui ont la valeur et l'ajouter à une pile.DFS: Ajout de nœuds avec une certaine valeur à une pile (java)

private Stack<Integer> dfs(Node e, Stack stack) { 

    if(e.num != 0){ 
     stack.push(e.num); 
    } 

    for(Node child : e.children){ 
     dfs(child, stack); 
    } 

    return stack; 
} 

Mon problème est que l'e.num pertinent ne semble pas être ajouté à la pile. Au lieu de cela, la pile revient vide.

+1

Le code que nous voyons est assez simple. Quel est le type d'e.num? (e.num! = 0) vérifier pourrait échouer. – uoyilmaz

Répondre

0

vous devez garder une trace des nœuds visités. votre code obtiendra une exception si l'arbre a un bord arrière. De plus, Java est un renvoi par référence, il vaut donc mieux annuler la fonction.

+0

cet arbre n'a pas d'arêtes arrière –

+0

pouvez-vous ajouter la classe Node? – ugurdonmez