Avatar billede dronten Nybegynder
28. november 2008 - 13:38 Der er 2 kommentarer

opbygning af træ

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:
[code]
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;

    }

}
[/code]

Selve opbygningen:
[code]
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; 
              } 
          } 
      } 
  } 

[/code]
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?
Avatar billede tjens Nybegynder
28. november 2008 - 22:12 #1
De 2 gange
  Node p = new Node( ...
bliver lokale variable, og deres scope slutter ved break. Derefter forsvinder de!

Dermed får du ikke bygget videre på dit træ.

Kan du skitsere, hvordan dit træ skulle se ud efter whilen?

Som det ser ud nu giver det følgende "Operator" og "Digit" nodes når programmet kører:

D: 2
D: 2
O:2*2
D: 3
O:3+*
D: 11
D: 8
O:8-11
O:-*+
D: 2
O:2**

Men som sagt forsvinder de straks efter dannelsen.
Avatar billede arne_v Ekspert
01. december 2008 - 04:15 #2
Hvad skal du iøvrigt bruge et træ til ?

Du kan evaluere RPN med stak som data struktur.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester