Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Implement the following expression tree in JAVA that works with an expression th

ID: 3595935 • Letter: I

Question

Implement the following expression tree in JAVA that works with an expression that contains only variables or double values and supports operations +, -, *, and / by providing two additional methods: void setVariable(String name, double value) – set the variable name with a value with exception handling;package TreePackage;

Could you help me to solve this problem? I wrote the following code, but it doesnt work correctly.

Sample usage:

ExpressionTree expr = new ExpressionTree(new String[]{"a", "b", "2", "/","+"});

expr.setVariable("a", 1.5);

expr.setVariable("b", 2);

System.out.println(expr.evaluate());

public class ExpressionTree extends BinaryTree<String>
                            implements ExpressionTreeInterface
{
   public ExpressionTree()
   {
   } // end default constructor

   public double evaluate()
   {
      return evaluate(getRootNode());
   } // end evaluate

   private double evaluate(BinaryNode<String> rootNode)
   {
      double result;

      if (rootNode == null)
         result = 0;
      else if (rootNode.isLeaf())
      {
         String variable = rootNode.getData();
         result = getValueOf(variable);
      }
      else
      {
         double firstOperand = evaluate(rootNode.getLeftChild());
         double secondOperand = evaluate(rootNode.getRightChild());
         String operator = rootNode.getData();
         result = compute(operator, firstOperand, secondOperand);
      } // end if

      return result;
   } // end evaluate
    
   private double getValueOf(String variable)
   { // Strings allow multicharacter variables

      double result = 0;
    
      if (variable.equals("a"))
         result = 2;
      else if (variable.equals("b"))
         result = 3;
      else if (variable.equals("c"))
         result = 4;
      else if (variable.equals("d"))
         result = 5;
      else if (variable.equals("e"))
         result = 2;

      return result;
   } // end getValueOf

   private double compute(String operator, double firstOperand, double secondOperand)
   {
      double result = 0;
    
      if (operator.equals("+"))
         result = firstOperand + secondOperand;
      else if (operator.equals("-"))
         result = firstOperand - secondOperand;
      else if (operator.equals("*"))
         result = firstOperand * secondOperand;
      else if (operator.equals("/"))
         result = firstOperand / secondOperand;

      return result;
   } // end compute

   // For testing purposes  
   public void displayTree()
   {
      BinaryNode<String> rootNode = (BinaryNode<String>)getRootNode();
      System.out.println("preorder:");
      preorder(rootNode);
      System.out.println();
    
      System.out.println("postorder:");
      rootNode = (BinaryNode<String>)getRootNode();
      postorder(rootNode);
      System.out.println();
   } // end displayTree

   private void postorder(BinaryNode<String> rootNode)
   {
      if (rootNode != null)
      {
         postorder(rootNode.getLeftChild());
         postorder(rootNode.getRightChild());
         System.out.print(rootNode.getData() + " ");
      } // end if
   } // end postorder

   private void preorder(BinaryNode<String> rootNode)
   {
      if (rootNode != null)
      {
         System.out.print(rootNode.getData() + " ");
         preorder(rootNode.getLeftChild());
         preorder(rootNode.getRightChild());
      } // end if
   } // end preorder
} // end ExpressionTree

Explanation / Answer

Could you please share the enitre code ?

I see the package and class is missing