expressions and expression trees
play

Expressions and Expression Trees CS2: Data Structures and Algorithms - PowerPoint PPT Presentation

Expressions and Expression Trees CS2: Data Structures and Algorithms Colorado State University Russ Wakefield, Sudipto Ghosh and Wim Bohm Infix Expressions Infix notation places each operator between two operands for binary operators: A *


  1. Expressions and Expression Trees CS2: Data Structures and Algorithms Colorado State University Russ Wakefield, Sudipto Ghosh and Wim Bohm

  2. Infix Expressions ✦ Infix notation places each operator between two operands for binary operators: A * x * x + B * x + C; // quadratic equation ✦ This is the customary way we write math formulas in most programming languages. ✦ However, we need to specify an order of evaluation in order to get the correct answer. CS165: Data Structures and Algorithms – Spring Semester 2020 2

  3. Evaluation Order ✦ The evaluation order you may have learned in math class is named PEMDAS: Parentheses → E xponentiation → M ultiplication, Division → A ddition, Subtraction ✦ Also need to account for unary, logical and relational operators, pre/post increment, etc. ✦ Java has a similar order of evaluation. CS165: Data Structures and Algorithms – 3 Spring Semester 2020

  4. Reminder: Java Precedence parentheses ( ) unary ++ -- + - ~ ! multiplicative * / % additive + - shift << >> relational < > <= >= instanceof equality == != bitwise AND & bitwise exclusive OR ^ bitwise inclusive OR | logical AND && logical OR || ternary conditional ? : assignment = += -= *= /= %= &= ^= |= <<= >>= >>>= CS165: Data Structures and Algorithms – Spring Semester 2020 4

  5. Associativity Operators with same precedence: * / and + - are evaluated left to right: 2-3-4 = (2-3)-4 CS165: Data Structures and Algorithms – Spring Semester 2020 5

  6. Expression Trees ✦ Parsing decomposes source code and builds a representation that represents its structure. ✦ Parsing generally results in a data structure such as a tree: + + C A * x * x + B * x + C * * x x * B x A A x * x * B x * + C + // postfix version CS165: Data Structures and Algorithms – Spring Semester 2020 6

  7. Infix, Postfix, Prefix Conversion Infix Postfix Prefix Notes multiply A and B, A * B + C / D A B * C D / + + * A B / C D divide C by D, add the results add B and C, A * (B + C) / D A B C + * D / / * A + B C D multiply by A, divide by D divide C by D, A * (B + C / D) A B C D / + * * A + B / C D add B, multiply by A CS165: Data Structures and Algorithms – Spring Semester 2020 7

  8. Expression Trees / * + / \ / \ * D A + / \ * / / \ / \ B / A + / \ / \ A B C D / \ / \ B C C D Infix: A*B + C/D A*(B+C)/D A*(B+C/D) Postfix: A B * C D / + A B C + * D / A B C D / + * Evaluate Post Order Left to Right Notice: the deeper in the tree, the higher the precedence CS165: Data Structures and Algorithms – Spring Semester 2020 8

  9. Evaluating expression trees ✦ By postfix traversal: – Internal node: operator first evaluate children sub-trees ◆ then evaluate the operator and return result ◆ – Leaf: operand either identifier: produce current value ◆ or constant: produce value ◆ return result ◆ CS165: Data Structures and Algorithms – Spring Semester 2020 9

  10. Java support for trees? ✦ Question: Does the Java Collection framework have support for binary trees? ✦ Answer: No, you have to build your own trees using the same techniques as with linked lists. CS165: Data Structures and Algorithms – Spring Semester 2020 10

  11. Post Order Evaluation of an Integer Expression Tree private Integer evalBin(String op, Integer left, Integer right){ if(op.equals("+")) return left + right; if(op.equals("-")) return left - right; if(op.equals("*")) return left * right; if(op.equals("/")) return left / right; else return null; } public int postorderEval(TreeNode node){ String token = node.getItem(); if( isOperator(token)){ //internal node Integer left = postorderEval(node.getLeft()); Integer right = postorderEval(node.getRight()); return evalBin(token, left, right); } else // leafs are int literals here return Integer.parseInt(token); } CS165: Data Structures and Algorithms – Spring Semester 2020 11

  12. Post order evaluation of 3*4+10-2 - - - - / \ / \ / \ / \ + 2 + 2 + 2 + 2 / \ / \ / \ 12 / \ * 10 * 10 * 10 * 10 / \ / 3 \ / 3 \4 / 3 \4 3 4 3 3 4 4 3 4 20 - - - - 22 / \ 22 / \ 2 / \ 22 / \ 2 + + + 2 + 2 2 2 12 / \ 10 12 / \ 10 12 / \ 10 12 / \ 10 * 10 * 10 * 10 * 10 / 3 \4 / 3 \4 / 3 \4 / 3 \4 3 4 3 4 3 4 3 4 CS165: Data Structures and Algorithms – Spring Semester 2017 12

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend