opbygning af træ

Tags:    java

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:
Fold kodeboks ind/udKode 


Selve opbygningen:
Fold kodeboks ind/udKode 

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
Problemet er, at når du har lavet dine node, så bruger du den ikke igen. Når du løber din streng igennem, møder du først et '2'. Du oprette så en node med '2' som data og smider samme '2' på stack. Det samme gentager sig med næste '2'. Det næste er en '*'. Her opretter du så to nye nodes med totallerne som data igen og opretter endnu en node til '*' med de to nye nodes som undernodes i stedet for de to, som lige er oprettet. Din fejl består i at du smider 'T' på stakken og ikke 'p'. Smid 'p' på stakken og drop de to Node n1 + Node n2 liner og brug i stedet stack.pop(), stack.pop() som subnodes i Node p i operators, altså Node p = new Node(T,stack.pop(),stack.pop());. På den måde er det de nodes du opretter ved cifrene som bliver subnodes af din operator node.

Gav det mening?



Indlæg senest redigeret d. 28.11.2008 14:51 af Bruger #132
Det giver fint mening. mange tak :)

Nu hvor jeg har lavet det om til en enkelt linje med Node p = new Node(T,stack.pop(),stack.pop());
og pusher p på stakken, giver compileren denne fejl på den linje:
Fold kodeboks ind/udKode 


Jeg har prøvet mig lidt frem med hvad der er galt, men jeg kan ikke lige gennemskue det?




Fejlmeddelelsen lyder som om du ikke har en kostruktør der kan indeholde de data som du sender til den. Måske har deklareret dine typer forkert...



Min stack skulle se således ud: Deque<Node> stack = new ArrayDeque<Node>();

Mange tak for hjælpen :)



t