这是一道简单的java作业题,实在是无从下手,请高手指导一下,如果能帮助写出较好的代码,追加50分!(可以百度Hi我~)
题目要求是:将算术表达式(含括号)改写成中序表达的二叉树。
已给了整个程序的结构。
一个Expression类,作为所有表达式类型的抽象父类。
一个Constants类,是Expression的子类之一,表示算术式中的常量。
一个Variable类,是Expression的子类之一,表示算术式中的变量。
一个OperatorExpression类,是Expression的子类之一,表示算术式中的运算符号。
除此以外,还有assignVariables类,用于给变量赋值。
还有最重要的类叫做Parser,用于分解这个算术表达式。这个类要利用前面的Expression来判断分解出来的是什么类型。
我自己尝试写了一下,但是对于Parser我没有概念,因为老师给出的方法是返回Expression类型,我到底应该怎么写呢?
请各位高手帮帮忙哦!能帮我写出完整代码的还有追加~~
以下是我写的,肯定有很多不对的地方(尤其是每个子类的givValue方法是我猜的~ 其他的方法是老师规定的):
abstract class Expression {
public abstract int givValue(assignVariables variables);
}
public class Constants extends Expression {
private int Constants;
public Constants(int Constants) {
this.Constants = Constants;
}
public int givValue(assignVariables variables){
return this.Constants;
}
}
public class Variable extends Expression{
private String variable;
private int constants;
public Variable(String variable){
this.variable = variable;
}
public int givValue(assignVariables variables){
return this.constants;
}
}
public class OperatorExpression extends Expression{
private Expression expression1;
private char operator;
private Expression expression2;
private int constants;
public OperatorExpression(Expression expression1, char operator, Expression expression2){
this.expression1 = expression1;
this.operator = operator;
this.expression2 = expression2;
}
public int givValue(assignVariables variables){
return this.constants;
}
}
public class assignVariables {
private String variable;
private int value;
public assignVariables(){
}
public void assignValue(String variable, int value){
this.variable = variable;
this.value = value;
}
public int givValue(String variables){
return this.value;
}
}
public class Parser {
public Expression parse(String expression){
}
}
是要转化成中序的二叉树形式,给一个例子:
(ab + 1) ∗ 5/(b + 201 ∗ (a − b))
转化成插入图片中的二叉树的样子