// 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);
        }