Programmation Orientée Objet

TP n° 3

Tableau, pile, arbre binaire



Exercice 1. Calcul d'une expression en polonaise inversée → pile et tableau

On désire écrire un programme Java permettant d'évaluer des expressions écrites en polonaise inversée. La notation polonaise inversée ou post-fixée permet de noter les formules arithmétiques sans utiliser de parenthèses.

Exemples :


Écriture usuelle

Écriture en polonaise inversée

(2+3)*4

2 3 + 4 *

4 2 3 + *

1 + (2 + 3)

1 2 3 + +

2 – 3

2 3 -


Pour effectuer le calcul, chaque donnée numérique est empilée, et lorsqu'on lit un opérateur, les opérandes sont dépilés (2 si l'opérateur est binaire), l'opération est effectuée et le résultat est mis au sommet de la pile.
Ainsi, par exemple, pour évaluer 2 3 + 4 * :

  1. lecture de 2 qui est reconnu comme donnée numérique et de ce fait est empilé,

  2. lecture de 3 qui est également empilé,

  3. lecture de + qui est un opérateur binaire : 2 et 3 sont dépilés, le calcul 2 + 3 est effectué, le résultat 5 est empilé,

  4. lecture de 4 qui est empilé,

  5. lecture de * , opérateur binaire : 4 et 5 sont dépilés, le calcul 4*5 est effectué et le résultat 20 est empilé,

  6. la chaîne est entièrement lue → le résultat final est au sommet de la pile.


Dans votre programme Java, la pile sera à base d'un tableau et ses éléments de type Integer.

Écrire la classe PileParTableau qui comporte :

comme attributs :

Note : la taille du tableau n'est pas mémorisée étant donné qu'elle peut être calculée (tab.length).

comme constructeur

et les méthodes spécifiques aux piles :

On ne demande aucune gestion particulière des erreurs. Renvoyer null si la pile à dépiler est vide et ne rien faire s'il faut empiler un nouvel élément dans une pile pleine.


Écrire ensuite la classe Expression. Cette classe comporte :

public String[] split(String regex)

Cette méthode a déjà été utilisée lors d'un précédent TP.

Vous pouvez compléter votre classe avec des méthodes privées telles que :


Écrire la classe TestPile qui comporte la méthode main où s'effectue la lecture interactive de l'expression polonaise à calculer et l'affichage du résultat.


Exercice 2. Arbre binaire

Reprendre l'exercice sur les arbres binaires vu en TD.

Tester les méthodes déjà programmées.

Finir l'exercice.

Indications pour la suppression d'un nœud :

  1. Le nœud à supprimer est feuille de l'arbre

  1. Le nœud à supprimer n'est pas feuille (nœud interne ou racine de l'arbre)


Cas particulier qui posera problème : l'arbre est constitué d'un seul nœud qui est le nœud à supprimer.

Exemple

Soit l'arbre binaire avec des données entières :

Arbre binaire