Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Change this Java code to ask user to enter Infix then print out Infix, postfix and prefix. Thank you /** * Java Program to Implement

Change this Java code to ask user to enter Infix then print out Infix, postfix and prefix. Thank you

/**

* Java Program to Implement Expression Tree Algorithm

*/

/** Class ExpressionTree **/

class ExpressionTree

{

/** class TreeNode **/

class TreeNode

{

char data;

TreeNode left, right;

/** constructor **/

public TreeNode(char data)

{

this.data = data;

this.left = null;

this.right = null;

}

}

/** class StackNode **/

class StackNode

{

TreeNode treeNode;

StackNode next;

/** constructor **/

public StackNode(TreeNode treeNode)

{

this.treeNode = treeNode;

next = null;

}

}

private static StackNode top;

/** constructor **/

public ExpressionTree()

{

top = null;

}

/** function to clear tree **/

public void clear()

{

top = null;

}

/** function to push a node **/

private void push(TreeNode ptr)

{

if (top == null)

top = new StackNode(ptr);

else

{

StackNode nptr = new StackNode(ptr);

nptr.next = top;

top = nptr;

}

}

/** function to pop a node **/

private TreeNode pop()

{

if (top == null)

throw new RuntimeException("Underflow");

else

{

TreeNode ptr = top.treeNode;

top = top.next;

return ptr;

}

}

/** function to get top node **/

private TreeNode peek()

{

return top.treeNode;

}

/** function to insert character **/

private void insert(char val)

{

try

{

if (isDigit(val))

{

TreeNode nptr = new TreeNode(val);

push(nptr);

}

else if (isOperator(val))

{

TreeNode nptr = new TreeNode(val);

nptr.left = pop();

nptr.right = pop();

push(nptr);

}

}

catch (Exception e)

{

System.out.println("Invalid Expression");

}

}

/** function to check if digit **/

private boolean isDigit(char ch)

{

return ch >= '0' && ch <= '9';

}

/** function to check if operator **/

private boolean isOperator(char ch)

{

return ch == '+' || ch == '-' || ch == '*' || ch == '/';

}

/** function to convert character to digit **/

private int toDigit(char ch)

{

return ch - '0';

}

/** function to build tree from input */

public void buildTree(String eqn)

{

for (int i = eqn.length() - 1; i >= 0; i--)

insert(eqn.charAt(i));

}

/** function to evaluate tree */

public double evaluate()

{

return evaluate(peek());

}

/** function to evaluate tree */

public double evaluate(TreeNode ptr)

{

if (ptr.left == null && ptr.right == null)

return toDigit(ptr.data);

else

{

double result = 0.0;

double left = evaluate(ptr.left);

double right = evaluate(ptr.right);

char operator = ptr.data;

switch (operator)

{

case '+' : result = left + right; break;

case '-' : result = left - right; break;

case '*' : result = left * right; break;

case '/' : result = left / right; break;

default : result = left + right; break;

}

return result;

}

}

/** function to get postfix expression */

public void postfix()

{

postOrder(peek());

}

/** post order traversal */

private void postOrder(TreeNode ptr)

{

if (ptr != null)

{

postOrder(ptr.left);

postOrder(ptr.right);

System.out.print(ptr.data);

}

}

/** function to get prefix expression */

public void prefix()

{

preOrder(peek());

}

/** preorder traversal */

private void preOrder(TreeNode ptr)

{

if (ptr != null)

{

System.out.print(ptr.data);

preOrder(ptr.left);

preOrder(ptr.right);

}

}

/** function to get infix expression */

public void infix()

{

inOrder(peek());

}

/** in order traversal */

private void inOrder(TreeNode ptr)

{

if (ptr != null)

{

inOrder(ptr.left);

System.out.print(ptr.data);

inOrder(ptr.right);

}

}

}

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Pro PowerShell For Database Developers

Authors: Bryan P Cafferky

1st Edition

1484205413, 9781484205419

More Books

Students also viewed these Databases questions

Question

LO2 Identify components of workflow analysis.

Answered: 1 week ago