Build Binary Expression Tree
Könnte mir jemand erklären, wie man einen binären Ausdruck Baum.
Ich habe zum Beispiel einen string 2*(1+(2*1));
Wie zu konvertieren, das in einem binären Ausdruck Baum.
*
| \
| \
2 +
|\
1 *
|\
2 1
Könnten Sie eine Lösung implementieren, mit der Rangier-yard-Algorithmus. Hier sind einige details auf wikipiedia: <en.wikipedia.org/wiki/Shunting-yard_algorithm>. Dieser algo erfunden wurde von Edsger Dijkstra, es ist eine sehr schöne alternative. Wenn Sie müssen einige details, kann ich nach einem code-Beispiel, das schrieb ich in C# vor einiger Zeit, aber ich nehme an, dass der wikipedia-link ist mehr als genug.
InformationsquelleAutor user1110839 | 2012-02-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Convert infix -, postfix-oder Präfix
Postfix-Eingabe: a b + c d e +**
Java-Implementierung
Mehr info: http://en.wikipedia.org/wiki/Binary_expression_tree
InformationsquelleAutor SHA
müssen Sie:
zum Beispiel, nehmen Sie einen Blick an diesem Ansatz: http://en.wikipedia.org/wiki/Recursive_descent_parser
gibt es andere
InformationsquelleAutor akonsu
Konvertieren der Ausdruck Präfix-oder postfix-notation. Von dort aus sollte es ziemlich einfach sein. Algorithmen sind im folgenden wiki-links.
http://en.wikipedia.org/wiki/Polish_notation
http://en.wikipedia.org/wiki/Reverse_Polish_notation
InformationsquelleAutor ElKamina
Kann es gliedert sich in zwei Schritte:
Berechnen priority-Wert für jedes token.
Beispiel: '+': 1, 'x': 2, Nummer: inf, '(': add 10, base, ')': subtrahieren Sie 10 von der Basis)
Bauen Kartesische Baum basierend auf Priorität unter Verwendung einer stack (ca 5 Zeilen code)
Können Sie es tun in einem scan.
InformationsquelleAutor Pei