Я работаю над java программой, которая оценивает арифметическое выражение c prefix. Он принимает нормальное арифметическое c выражение, которое пользователь введет, затем преобразует его в префиксную форму. Например, если вы введете следующее выражение: 3 + (5 + 9) * 2 , оно преобразуется в: + 3 * + 592 . Затем он сохранит его в дереве выражений введите описание изображения здесь . Я ищу алгоритм для правильного хранения префиксного выражения в дереве. Я использую узел, который имеет значение char и два узла в качестве атрибутов класса. Я сделал весь персонал для оценки выражения (используя дерево), мне нужно просто сохранить выражение префикса в дереве. Если у вас есть предложения по реализации java, это будет лучше. Спасибо
Класс узла:
public class Noeud
{
String value;
static Noeud right;
static Noeud left;
// Constructors
public Noeud()
{
this.value = "";
this.right = this.left = null;
}
public Noeud(String operation)
{
this.value = operation;
this.right = this.left = null;
}
public Noeud(String operation, Noeud filsdroit, Noeud filsgauche)
{
this.value = operation;
this.right = filsdroit;
this.left = filsgauche;
}
// Methods
public void ajouteGauche(String caractere) // to add the left child
{
Noeud gauche = new Noeud(caractere);
this.left = gauche;
}
public void ajouteDroite(String caractere) // to add the right child
{
Noeud droite = new Noeud(caractere);
this.right = droite;
}
public boolean isLeaf()
{
return this.right == null && this.left == null;
}
// toString
}
И вот что сделает моя программа:
public static void main(String[] args)
{
System.out.println("Input a infix arithmetic expression");
Scanner scan = new Scanner(System.in);
String expInitiale = scan.nextLine();
expInitiale = infixToPreFix(expInitiale).toString();
System.out.println("Votre expression en forme préfixe " + expInitiale);
/* Building the tree (That's what i need) */
Noeud root = constructTree(expInitiale);
// Evaluation of the expression
double result = eval(root);
System.out.prinln("The result is" + result );
}
}