2017-04-21 2 views
0

Je rencontre un problème lorsque ma méthode renvoie uniquement le nœud racine en tant que chaîne. Alors qu'il imprime l'ordre de publication correctement si j'imprime le nœud dans la méthode helperPostOrder.Problème lié à l'expression de l'arborescence du post-retour à l'aide de la récursivité dans Java

public String postorder() 
{ 
    return helperPostOrder(root, ""); // method calling 
} 

private String helperPostOrder(Node root , String s){ 
    if(root != null) 
    { 
     if(hasLeft(root)){ 
      helperPostOrder(root.left, s); 
     } 

     if(hasRight(root)){ 
      helperPostOrder(root.right, s); 
     } 
     s = s + " " + root; 
    } 

    return s; 
} 
+0

Votre appel récursif 'helperPostOrder (root.left, s);' ne modifie pas 's', la valeur que vous allez retourner. C'est probablement pourquoi votre méthode renvoie la valeur racine sans les sous-arbres gauche et droit. –

Répondre

2

Pouvez-vous essayer? Je n'ai pas un compilateur ici, mais je pense qu'il est correct:

public String postorder() 
{ 
    return helperPostOrder(root, ""); // method calling 
} 

private String helperPostOrder(Node root , String s){ 
    if(root != null) 
    { 
     if(hasLeft(root)){ 
      s = s + " " + helperPostOrder(root.left, s); 
     } 

     if(hasRight(root)){ 
      s = s + " " + helperPostOrder(root.right, s); 
     } 
    } 

    return s; 
} 

Ajouté par @Ole V.V .: Votre helperPostOrder appel récursif (root.left, s); ne modifie pas s, la valeur que vous allez retourner. C'est probablement pourquoi votre méthode renvoie la valeur racine sans les sous-arbres gauche et droit.

+1

Si mon explication dans le commentaire sous la question est correcte, cela devrait résoudre le problème. Votre réponse serait utile d'expliquer comment et pourquoi ... –

+1

mis à jour avec votre explication que je suis tout à fait d'accord avec lui – strash

+0

J'ai essayé votre code donné mais il n'imprime toujours rien. –