• Aucun résultat trouvé

Un arbre binomial de type 0 est un sommet sans feuille

N/A
N/A
Protected

Academic year: 2022

Partager "Un arbre binomial de type 0 est un sommet sans feuille"

Copied!
2
0
0

Texte intégral

(1)

INITIATION À LAPROGRAMMATION (IP2) TD12 : Tas binomial

université PAR

IS . DIDEROT

PARIS 7

Ce TD est consacré au tas binomial, qui est essentiellement une liste d'arbres spéciaux qui nous permet d'extraire rapidement le plus petit élément.

Un arbre binomial est un arbre d'arité arbitraire construit récursivement. Les arbres binomiaux sont regroupés par leur type. Un arbre binomial de type 0 est un sommet sans feuille. Pour k0, un arbre binomial de type k+1 se construit en attachant la racine d'un arbre binomial de type k comme l'enfant d'un autre arbre binomial de typek. Voici quelques exemples d'arbre binomial dans la gure suivante. Nous pouvons constater que l'arbre de type 4 est bien construit par attacher un arbre de type 3 (rectangle bleu) à la racine d'un autre arbre de type3 (rectangle rouge).

Voici une classe ArbreB qui modélise un arbre binomial dont chaque noeud contient un entier.

class ArbreB {

2 public final int type ;

private final ArbreB [] enfants ;

4 public final int val ; }

Exercice 1 Commençons par la manipulation des arbres binomiaux.

1. Combien de sousarbres un arbre binomial de typekpossède-t-il ? Combien de noeuds un arbre binomial de type kpossède-t-il ?

2. Ecrire un constructeur ArbreB(int val) qui crée un arbre binomial de type 0 contenant la valeur val. Ecrire un constructeur normal ArbreB(int type, ArbreB[] enfants, int val); 3. Ecrire une méthodepublic ArbreB fusion(ArbreB a)qui a la fonctionnalité suivante : sithis

etaont le même typek, alors construire un nouvel arbre de typek+1en attachant l'arbre dont la racine porte une valeur plus grande à la racine de l'autre. Tous les arbres ainsi construits sont croissants sur toutes les branches. Pourquoi ?

4. Ecrire une méthodevoid affiche()qui ache les noeuds en ordre préxe.

5. Ecrire une méthodeint somme()qui renvoie la somme de tous les valeurs dans l'arbre.

Un tas binomial est tout simplement une liste d'arbres binomiaux du type 2 à 2 distinct. Il peut être modélisé par la classe TasB suivante, venue avec un constructeur vide.

1

(2)

class TasB {

2 private ArbreB [] element = new ArbreB [64];

// element [k] est l'arbre de type k, s'il existe

4 }

Exercice 2 Continuons par la manipulation des tas binomiaux.

1. Quel est le nombre maximal de noeuds pour un tas binomial représenté par la classeTasB? Combien de mémoire qu'il prendra dans ce cas ? Justier pourquoi on peut supposer qu'il n'y aura pas de débordement du tableau element[64].

2. Ecrire un constructeur normalTasB(ArbreB[] e)qui prend les premiers 64 éléments du tableau (s'il y en a). Ecrire un constructeur vide TasB().

3. Ecrire une méthode void ajout(ArbreB a) qui ajoute l'arbre a dans le tas binomial courant en conservant la propriété du tas, c'est-à-dire les types des arbres 2 à 2 distincts. A chaque fois qu'il y a deux arbres du même type, il faut les fusionner. L'ajout d'un arbre peut nécessiter plusieurs fusions.

4. Ecrire une méthodevoid ajout(int val) qui ajoute la valeurval au tas courant. Nous pou- vons utiliser les méthodes précédentes.

5. Ecrire une méthodevoid ajout(TasB t)qui ajoute tous les arbres du tas tau tas courant.

6. Dans la classe ArbreB, écrire une méthode TasB sousArbres() qui renvoie un tas binomial formé par les sous-arbres de l'arbre courant.

7. Ecrire une méthodeint retireMinimal() qui retire le noeud avec la valeur minimale du tas en conservant la propriété du tas binomial. Nous pouvons d'abord chercher l'arbre dont la racine contient la valeur minimale (pourquoi ?), retirer cet arbre du tas, construire un autre tas contenant tous les sous-arbres mais pas la racine, puis le fusionner avec le tas original.

8. Observer le nombre d'opérations dans chaque méthode. Pourquoi le tas binomial est ecace ? 9. Ecrire une méthode statique int[] tri(int[] tab) qui renvoie un tableau trié en ordre

croissant en utilisant un tas binomial.

2

Références

Documents relatifs

Créer de la peinture dans les couleurs secondaires : orange, vert, jaune d'or, rouge, pourpre, à partir de la gouache dans les couleurs primaires : jaune, magenta et cyan puis

[1] Après Amiens, les voûtes de Metz sont les plus hautes de France dans une cathédrale achevée. [2] Ce sont en effet les principaux éléments de l’architecture gothique, qui

arbre enraciné dans lequel les fils de chaque noeud sont ordonnés. Autrement dit, si un noeud a k fils, alors il existe un premier, deuxième, …etc fils.. • Un arbre binomial

FETE DES MERES fête des mères. fête des mères

Suppression d’un ´el´ement : si la feuille est toujours assez compl`ete, aucun probl`eme et si le nombre d’´el´ements tombe en-dessous de dL/2 e2. prendre des ´el´ements des

Calculer la probabilité d’avoir deux boules bleues, puis la probabilité d’avoir une boule jaune et une boule rouge...

Dans le cas de points p-q-i alignés (orientation 0), le point le plus éloigné de P est conservé (dans le tableau donné en exemple ci-dessous, c'est la différence des distances PQ

- le niveau du test passé (français entrée en CE1) - le score obtenu par l’élève (sur 20 points) - le niveau souhaité pour cet élève (CP ou CE1) - et si possible, le scan