La conversion d'une expression infix (entre parenthèses) dans un arbre binaire
Dans le cadre d'une application Java, je dois prendre une entrée une expression arithmétique et de le stocker dans un arbre binaire.
J'ai fait tout le nécessaire pour la cession sauf pour la partie où j'ai lu dans la chaîne de l'expression et de la stocker dans l'arbre binaire.
J'ai créé une catégorie appelée BinaryTree. Son seul champ est un treenode appelé racine. Cette treenode est défini comme un innerclass dans BinaryTree. Il dispose de 3 champs, un générique champ de données, et de deux enfants (gauche et droite) qui sont de type BinaryTree.
Je vais avoir un moment très difficile de définir un algorithme pour la lecture dans une expression comme
(5*(2+3)^3)/2
et de les stocker dans un arbre comme ce
/
^ 2
* 3
5 +
2 3
N'importe qui peut aider avec l'algorithme?
1+2
. Lorsque vous obtenez ce que, n': 1+2*3
. Encore plus complexe: 1*2+3
. Enfin: (1+2)*3
Voulez-vous une explication pour l'algo?
OriginalL'auteur HesNotTheStig | 2012-04-24
Vous devez vous connecter pour publier un commentaire.
Prendre un coup d'oeil à la shunting-yard algorithme. De Wikipedia:
OriginalL'auteur NPE
Voici quelques Le code C++ pour créer une expression binaire de l'arbre qui utilise deux piles, l'une pour les opérateurs et un autre pour les opérandes. Finalement, l'opérande de la pile contient un seul élément, la complète expression binaire de l'arbre.
OriginalL'auteur Kurt Krueckeberg