Advertisement
heavenriver

2011_09_14.java (ex. 2)

Jan 1st, 2013
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.48 KB | None | 0 0
  1. // Esame del 14 settembre 2011, esercizio 2
  2. // Ricordarsi di specificare sempre, nei commenti al codice, l'utilità di ogni metodo.
  3.  
  4. class ExpressionTreeNode
  5.     {
  6.     String op;
  7.     ExpressionTreeNode left;
  8.     ExpressionTreeNode right;
  9.     public ExpressionTreeNode(String op);
  10.     public String getOp();
  11.     public ExpressionTreeNode left();
  12.     public ExpressionTreeNode right();
  13.     public boolean hasLeft();
  14.     public boolean hasRight();
  15.     }
  16.  
  17. class ExpressionTree
  18.     {
  19.     ExpressionTreeNode root;
  20.     public ExpressionTree(String op);
  21.     public ExpressionTreeNode add(String op);
  22.     public ExpressionTreeNode remove(String op);
  23.    
  24.     public double eval() // Costo computazionale lineare al numero di operandi per definizione
  25.         {
  26.         return eval(root);
  27.         }
  28.     public double eval(ExpressionTreeNode n)
  29.         {
  30.         if(!n.hasLeft() && !n.hasRight()) return (double)n.getOp();
  31.         if(n.hasLeft() && !n.left().hasLeft())
  32.             {
  33.             if(n.getOp().equals("+")) return (double)n.left().getOp() + eval(n.right());
  34.             if(n.getOp().equals("-")) return (double)n.left().getOp() - eval(n.right());
  35.             if(n.getOp().equals("*")) return (double)n.left().getOp() * eval(n.right());
  36.             if(n.getOp().equals("/")) return (double)n.left().getOp() / eval(n.right());
  37.             }
  38.         if(n.getOp().equals("+")) return eval(n.left()) + eval(n.right());
  39.         if(n.getOp().equals("-")) return eval(n.left()) - eval(n.right());
  40.         if(n.getOp().equals("*")) return eval(n.left()) * eval(n.right());
  41.         if(n.getOp().equals("/")) return eval(n.left()) / eval(n.right());
  42.         }
  43.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement