<?xml version="1.0" encoding="UTF-8"?>

<upm-export>
	<title>Enseignement de l&#039;informatique et du numérique au lycée Boissy d&#039;Anglas</title>
	<link>https://icn-isn-boissy.yj.fr/wp</link>
	<description></description>
	<pubDate>Wed May 6 11:57:07 2026 / +0000  GMT</pubDate>
	<generator>Universal Post Manager 1.1.2 [ www.ProfProjects.com ] </generator>
	<language></language>
	
			<item>
			<title>Exercices -Arbres</title>
			<link>https://icn-isn-boissy.yj.fr/wp/?p=3768</link>
			<pubDate>Wed May 6 11:57:07 2026 / +0000  GMT</pubDate>
			<guid isPermaLink="false">https://icn-isn-boissy.yj.fr/wp/?p=3768</guid>
			<content-encoded><![CDATA[<!-- wp:heading -->
<h2 id="exercice-1">Exercice 1</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p><em>2021, sujet 0</em></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Question 1</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Déterminer la taille et la hauteur de l'arbre binaire suivant : <img alt="image" src="https://glassus.github.io/terminale_nsi/T1_Structures_de_donnees/1.3_Arbres/data/ex1a.png"></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Question 2</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>On décide de numéroter en binaire les nœuds d'un arbre binaire de la façon suivante :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>la racine correspond à 1 ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>la numérotation pour un fils gauche s'obtient en ajoutant le chiffre 0 à droite au numéro de son père ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>la numérotation pour un fils droit s'obtient en ajoutant le chiffre 1 à droite au numéro de son père ;</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Par exemple, dans l'arbre ci-dessous, on a utilisé ce procédé pour numéroter les nœuds A, B, C, E et F .</p>
<!-- /wp:paragraph -->

<!-- wp:image -->
<figure class="wp-block-image"><img src="https://glassus.github.io/terminale_nsi/T1_Structures_de_donnees/1.3_Arbres/data/ex1b.png" alt="image"/></figure>
<!-- /wp:image -->

<!-- wp:list {"ordered":true} -->
<ol><!-- wp:list-item -->
<li>Dans l'exemple précédent, quel est le numéro en binaire associé au nœud G ?</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Quel est le nœud dont le numéro en binaire vaut 13 en décimal ?</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>En notant h la hauteur de l'arbre, sur combien de bits seront numérotés les nœuds les plus en bas ? </li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Justifier que pour tout arbre de hauteur h et de taille n ≥ 2,                             on a : h ≤ n ≤ 2h − 1.</li>
<!-- /wp:list-item --></ol>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p><strong>Question 3</strong><br>Un arbre binaire est dit complet si tous les niveaux de l'arbre sont remplis. <img alt="image" src="https://glassus.github.io/terminale_nsi/T1_Structures_de_donnees/1.3_Arbres/data/ex1c.png"></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>On décide de représenter un arbre binaire complet par un tableau de taille n + 1, où n est la taille de l'arbre, de la façon suivante :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>La racine a pour indice 1 ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Le fils gauche du nœud d'indice i a pour indice 2 × i ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Le fils droit du nœud d'indice i a pour indice 2 × i + 1 ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>On place la taille n de l'arbre dans la case d'indice 0</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Répondre aux questions suivantes :</p>
<!-- /wp:paragraph -->

<!-- wp:list {"ordered":true} -->
<ol><!-- wp:list-item -->
<li>Déterminer le tableau qui représente l'arbre binaire complet de l'exemple précédent.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>On considère le père du nœud d'indice i avec i ≥ 2. Quel est son indice dans le tableau ?</li>
<!-- /wp:list-item --></ol>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p><strong>Question 4</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>On se place dans le cas particulier d'un arbre binaire de recherche complet où les nœuds contiennent des entiers et pour lequel la valeur de chaque noeud est supérieure à celles des noeuds de son fils gauche, et inférieure à celles des noeuds de son fils droit.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Écrire une fonction <code>recherche</code> ayant pour paramètres un arbre <code>arbre</code> et un élément <code>element</code>. Cette fonction renvoie <code>True</code> si <code>element</code> est dans l'arbre et <code>False</code> sinon. L'arbre sera représenté par un tableau comme dans la question précédente. corrigé</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><a href="https://icn-isn-boissy.yj.fr/wp/2022/10/14/corrige-exercice-1-les-arbres/" data-type="post" data-id="3770">Corrigé</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>merci à <a href="https://glassus.github.io/terminale_nsi/">G.Lassus</a></p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 id="exercice-2">Exercice 2</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p><em>2021, Métropole sujet 1</em>, exercice 1</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Dans cet exercice, les arbres binaires de recherche ne peuvent pas comporter plusieurs fois la même clé. De plus, un arbre binaire de recherche limité à un nœud a une hauteur de 1. On considère l'arbre binaire de recherche représenté ci-dessous (figure 1), où <code>val</code> représente un entier :</p>
<!-- /wp:paragraph -->

<!-- wp:image -->
<figure class="wp-block-image"><img src="https://glassus.github.io/terminale_nsi/T1_Structures_de_donnees/1.3_Arbres/data/ex2a.png" alt="image"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p><strong>1.a</strong> Donner le nombre de feuilles de cet arbre et préciser leur valeur (étiquette).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>1.b</strong> Donner le sous arbre-gauche du nœud 23.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>1.c</strong> Donner la hauteur et la taille de l'arbre.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>1.d</strong> Donner les valeurs entières possibles de <code>val</code> pour cet arbre binaire de recherche.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>On suppose, pour la suite de cet exercice, que <code>val</code> est égal à 16.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>2.</strong> On rappelle qu'un parcours infixe depuis un nœud consiste, dans l'ordre, à faire un parcours infixe sur le sous arbre-gauche, afficher le nœud puis faire un parcours infixe sur le sous-arbre droit.<br>Dans le cas d'un parcours suffixe, on fait un parcours suffixe sur le sous-arbre gauche puis un parcours suffixe sur le sous-arbre droit, avant d'afficher le nœud.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>a.</strong> Donner les valeurs d'affichage des nœuds dans le cas du parcours infixe de l'arbre.<br><strong>b</strong>. Donner les valeurs d'affichage des nœuds dans le cas du parcours suffixe de l'arbre.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>3.</strong> On considère la classe <code>Noeud</code> définie de la façon suivante en Python :</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:group -->
<div class="wp-block-group"><!-- wp:image {"width":615,"height":708} -->
<figure class="wp-block-image is-resized"><img src="https://glassus.github.io/terminale_nsi/T1_Structures_de_donnees/1.3_Arbres/data/ex2b.png" alt="image" width="615" height="708"/></figure>
<!-- /wp:image --></div>
<!-- /wp:group -->

<!-- wp:paragraph -->
<p><strong>a.</strong> Représenter l'arbre construit suite à l'exécution de l'instruction suivante :</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre id="__code_23" class="wp-block-code"><code>racine = Noeud(18)
racine.insere_tout(&#91;12, 13, 15, 16, 19, 21, 32, 23])
</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p><strong>b.</strong> Écrire les deux instructions permettant de construire l'arbre de la figure 1. On rappelle que le nombre <code>val</code> est égal à 16.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>c.</strong> On considère l'arbre tel qu'il est présenté sur la figure 1. Déterminer l'ordre d'exécution des blocs (repérés de 1 à 3) suite à l'application de la méthode <code>insere(19)</code> au nœud racine de cet arbre.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>4.</strong> Écrire une méthode <code>recherche(self, v)</code> qui prend en argument un entier <code>v</code> et renvoie la valeur <code>True</code> si cet entier est une étiquette de l'arbre, <code>False</code> sinon.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><a href="https://icn-isn-boissy.yj.fr/wp/2022/10/14/corrige-exercice-2/" data-type="post" data-id="3775">corrigé</a></p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 id="exercice-3">Exercice 3</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p><em>2021, Métropole Candidats Libres 2</em>, exercice 3</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>On rappelle qu'un arbre binaire est composé de nœuds, chacun des nœuds possédant éventuellement un sous-arbre gauche et éventuellement un sous-arbre droit. Un nœud sans sous-arbre est appelé feuille. La taille d'un arbre est le nombre de nœuds qu'il contient ; sa hauteur est le nombre de nœuds du plus long chemin qui joint le nœud racine à l'une des feuilles. Ainsi la hauteur d'un arbre réduit à un nœud, c'est-à-dire la racine, est 1.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Dans un arbre binaire de recherche, chaque nœud contient une clé, ici un nombre entier, qui est :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>strictement supérieure à toutes les clés des nœuds du sous-arbre gauche ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>strictement inférieure à toutes les clés des nœuds du sous-arbre droit.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Un arbre binaire de recherche est dit « bien construit » s'il n'existe pas d'arbre de hauteur inférieure qui pourrait contenir tous ses nœuds.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>On considère l'arbre binaire de recherche ci-dessous.</p>
<!-- /wp:paragraph -->

<!-- wp:image -->
<figure class="wp-block-image"><img src="https://glassus.github.io/terminale_nsi/T1_Structures_de_donnees/1.3_Arbres/data/ex3a.png" alt="image"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p><strong>1.a.</strong> Quelle est la taille de l'arbre ci-dessus ?</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>1.b.</strong> Quelle est la hauteur de l'arbre ci-dessus ? </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>2.</strong> Cet arbre binaire de recherche n'est pas « bien construit ». Proposer un arbre binaire de recherche contenant les mêmes clés et dont la hauteur est plus petite que celle de l'arbre initial. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>3.</strong> Les classes Noeud et Arbre ci-dessous permettent de mettre en œuvre en Python la structure d'arbre binaire de recherche. La méthode <code>insere</code> permet d'insérer récursivement une nouvelle clé.</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre id="__code_26" class="wp-block-code"><code>class Noeud :

    def __init__(self, cle):
        self.cle = cle
        self.gauche = None
        self.droit = None

    def insere(self, cle):
        if cle &lt; self.cle :
            if self.gauche == None :
                self.gauche = Noeud(cle)
            else :
                self.gauche.insere(cle)
        elif cle &gt; self.cle :
            if self.droit == None :
                self.droit = Noeud(cle)
            else :
                self.droit.insere(cle)

class Arbre :

    def __init__(self, cle):
        self.racine = Noeud(cle)

    def insere(self, cle):
        self.racine.insere(cle)</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p>Donner la représentation de l'arbre codé par les instructions ci-dessous.</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre id="__code_27" class="wp-block-code"><code>a = Arbre(10)
a.insere(20)
a.insere(15)
a.insere(12)
a.insere(8)
a.insere(4)
a.insere(5)
</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>4.</strong> Pour calculer la hauteur d'un arbre non vide, on a écrit la méthode ci-dessous dans la classe Noeud.</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre id="__code_28" class="wp-block-code"><code>def hauteur(self):
    if self.gauche == None and self.droit == None:
        return 1
    if self.gauche == None:
        return 1 + self.droit.hauteur()
    elif self.droit == None:
        return 1 + self.gauche.hauteur()
    else:
        hg = self.gauche.hauteur()
        hd = self.droit.hauteur()
        if hg &gt; hd:
            return hg + 1
        else:
            return hd + 1
</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p>Écrire la méthode <code>hauteur</code> de la classe <code>Arbre</code> qui renvoie la hauteur de l'arbre. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>5.</strong> Écrire les méthodes <code>taille</code> des classes <code>Noeud</code> et <code>Arbre</code> permettant de calculer la taille d'un arbre. corrigé Méthode de la classe :</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>6.</strong> On souhaite écrire une méthode <code>bien_construit</code> de la classe <code>Arbre</code> qui renvoie la valeur <code>True</code> si l'arbre est « bien construit » et <code>False</code> sinon.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>On rappelle que la taille maximale d'un arbre binaire de recherche de hauteur est 2<sup>h</sup>-1.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>6.a</strong> Quelle est la taille minimale, notée <code>min</code> d'un arbre binaire de recherche « bien construit » de hauteur h?</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>6.b</strong> Écrire la méthode <code>bien_construit</code> demandée. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><a href="https://icn-isn-boissy.yj.fr/wp/2022/10/14/corrige-exercice-3-les-arbres/" data-type="post" data-id="3787">corrigé</a></p>
<!-- /wp:paragraph -->]]></content-encoded>
			<excerpt-encoded><![CDATA[]]></excerpt-encoded>
			<wp-post_id>3768</wp-post_id>
			<wp-post_date>2022-10-14 08:30:02</wp-post_date>
			<wp-post_date_gmt>2022-10-14 06:30:02</wp-post_date_gmt>
				</item>
</upm-export>
