Je travaille sur l'impression d'une expression infixe à partir de mon arbre binaire. Cependant, je peux afficher le formulaire entièrement sous forme de parenthèses, mais la question consiste à imprimer uniquement les parenthèses nécessaires.Comment imprimer un infixe à partir d'un arbre d'expression binaire avec les parenthèses nécessaires?
Par exemple, considérons l'expression 7 2 8 - - 9 3 * +
. Le formulaire de Postfix peut être imprimé en pleine parenthésée:
((7 - (2 - 8)) + (9 * 3))
Ou il peut être imprimé avec des parenthèses nécessaires:
7 - (2 - 8) + 9 * 3
Ce que je Codé pour c'est ...
public Node root;
public void infix() {
infix(root);
}
public void infix(Node r) {
if (r != null) {
if (r.left != null && r.right != null) { //Check if it is a leaf
System.out.print ("(");
}
infix(r.left);
System.out.print(r.data);
infix(r.right);
if (r.left != null && r.right != null) { //Check if it is a leaf
System.out.print (")");
}
}
}
Mais Je n'ai aucune idée de comment faire cela. Quelqu'un pourrait-il m'aider s'il vous plaît?
Pouvez-vous expliquer en anglais lorsque des parenthèses sont requises? –
@JohnKugelman L'affichage de l'expression arithmétique dans la forme infixe doit utiliser des parenthèses pour rendre explicite l'ordre des opérations. Certaines parenthèses ne sont pas nécessaires. Par exemple, '7 - 2 - 8' et' 7 - (2 - 8) 'sont différents. Puisque selon la forme postfixe donnée, arithmatiquement, '2 - 8 (-6)' doit être évalué en premier et ensuite utiliser le résultat pour calculer '7 - (-6)'. Mais nous n'avons pas besoin de parenthèses pour indiquer '(9 * 3)' ou '(7 - (2 - 8))'. – null
cela pourrait aider http://scanftree.com/Data_Structure/postfix-to-infix – stacker