Hej, jeg skal have bygget mig et evaluerings træ der skal bruget til at evaluere et postfix udtryk.
Problemet kommet når jeg skal opbygge selve træet.
Tæet er ligesom et binært træ. Problemet er at hver gang jeg laver en ny node, bygger den ikke videre på dem der i forvejen er.
Node klassen:
class Node
{
Object data;
Node leftChild;
Node rightChild;
public Node(Object D, Node L, Node R)
{
this.data = D;
this.leftChild = L;
this.rightChild = R;
}
}
Selve opbygningen:
public class RPN {
public static void main (String args[]) {
Deque<Object> stack = new ArrayDeque<Object>();
String exsp = "2 2 * 3 + 11 8 - * 2 *";
String[] operators = {"-","+","*","/"};
StringTokenizer st = new StringTokenizer(exsp); // deler udtrykket i tokens
while (st.hasMoreTokens())
{
String T=st.nextToken();
for(int i = 0; i < 3; i++ )
{
if( T.equals( operators[i]))
{
Node n1 = new Node(stack.pop(),null,null);
Node n2 = new Node (stack.pop(),null,null);
Node p = new Node(T,n1,n2);
stack.push(T);
break;
}
else if( Character.isDigit(T.charAt(0)) ) //tjekker kun det forste symbol.
{
Node p = new Node(T, null, null);
stack.push(T);
break;
}
}
}
}
}
Jer har en teori om det kan være navnet på Node (p) der kan være en del af problemet. I så fald, hvordan er det muligt at give den nyt navn hver gang?
Indlæg senest redigeret d. 28.11.2008 13:36 af Bruger #14439