// Make calls to the classes that does the final calculation public override double Evaluate() { switch (this.Operator) { case '+': AdditionNode add = new AdditionNode('+'); add.Left = this.Left; add.Right = this.Right; return(add.Evaluate()); case '-': SubtractionNode sub = new SubtractionNode('-'); sub.Left = this.Left; sub.Right = this.Right; return(sub.Evaluate()); case '*': MultiplicationNode mul = new MultiplicationNode('*'); mul.Left = this.Left; mul.Right = this.Right; return(mul.Evaluate()); case '/': DivisionNode div = new DivisionNode('/'); div.Left = this.Left; div.Right = this.Right; return(div.Evaluate()); default: break; } return(0.0); }