Build Binärer Ausdrucksbaum

algorithm expression-trees

Frage

Könnte jemand erklären, wie man eine binäre Ausdrucksbaumstruktur erstellt.

Zum Beispiel habe ich eine Zeichenfolge 2*(1+(2*1)); Wie man dies in einen binären Ausdruckbaum umwandelt.

 *
 | \
 |  \
 2  +
    |\
    1 *
      |\
      2 1

Beliebte Antwort

Konvertiere Infix zu Postfix oder Präfix

Die Postfix-Eingabe lautet: ab + cde + **

  1. Betrachte das erste Zeichen, wenn es kein Symbol ist, dann erzeuge den Knoten, füge es dem Stapel hinzu
  2. Wenn das Zeichen ein Symbol ist, dann erzeuge einen Knoten mit Symbol-Pop-Elementen und füge es dem Symbol links und rechts hinzu
  3. Schieben Sie den Symbolknoten in den Stapel.
  4. Wiederholen Sie 1, 2 und 3, bis der Iterator keine weiteren Elemente enthält

Java-Implementierung

public Tree.TreeNode createExpressionTree(){
    Iterator<Character>itr = postOrder.iterator();
    Tree tree = new Tree();
    NodeStack nodeStack = new NodeStack();
    Tree.TreeNode node;
    while (itr.hasNext()) {
        Character c = itr.next();
        if(!isDigit(c)){
            node = tree.createNode(c);
            node.right = nodeStack.pop();
            node.left = nodeStack.pop();
            nodeStack.push(node);
        }else{
            node = tree.creteNode(c);
            nodeStack.push(node);
        }
    }
    node = nodeStack.pop();
    return node;
}

Weitere Informationen: http://en.wikipedia.org/wiki/Binary_expression_tree



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum