Quiz: Listes, piles, files et arbres — 46 domande

Domande e risposte dettagliate

1. Quel type d’adressage permet d’accéder au contenu d’une variable en utilisant le nom de cette variable ?

La déréférence du pointeur
L’adressage indirect
L’allocation dynamique
L’adressage direct

L’adressage direct

Spiegazione

L’adressage direct utilise le nom de la variable pour accéder à son contenu. À l’inverse, l’adressage indirect s’appuie sur l’adresse plutôt que sur le nom.

2. Dans un programme C, qu’est-ce qu’un pointeur contient précisément ?

La valeur pointée par la variable
Une chaîne de caractères représentant un nom
Un bloc mémoire alloué directement sans adresse
L’adresse d’une autre variable

L’adresse d’une autre variable

Spiegazione

Un pointeur est une variable qui stocke l’adresse d’une autre variable, et il est limité à un type de données. Il ne contient pas directement la valeur pointée.

3. Quel énoncé décrit correctement le rôle de l’opérateur & et de l’opérateur unaire * en C ?

& permet d’accéder au contenu et * récupère l’adresse
& alloue dynamiquement un bloc et * le libère
& compare deux pointeurs et * sélectionne une branche conditionnelle
& récupère l’adresse et * permet d’accéder au contenu de la variable pointée

& récupère l’adresse et * permet d’accéder au contenu de la variable pointée

Spiegazione

En C, & récupère l’adresse d’une variable tandis que * donne accès au contenu de la variable pointée. Les autres choix inversent ou changent de mécanisme.

4. Pourquoi doit-on tester le pointeur renvoyé par malloc avant de l’utiliser ?

Parce que malloc renvoie NULL si la mémoire disponible est insuffisante
Parce que le test NULL sert uniquement à libérer la mémoire
Parce que malloc renvoie la taille du bloc et non une adresse
Parce que malloc retourne toujours une adresse valide même en cas d’échec

Parce que malloc renvoie NULL si la mémoire disponible est insuffisante

Spiegazione

malloc renvoie l’adresse du bloc demandé, ou NULL si la mémoire est insuffisante, d’où le test avant usage. Les autres propositions ignorent le cas d’échec explicitement mentionné.

5. Quelle différence caractérise correctement la recherche et le tri en termes de relations utilisées ?

La recherche repose sur un ordre total comme l’infériorité ou l’égalité, tandis que le tri repose sur une équivalence
La recherche repose sur une relation d’équivalence comme l’égalité, tandis que le tri repose sur une relation d’ordre total
La recherche repose sur l’infériorité, et le tri sur l’égalité stricte
La recherche et le tri reposent tous deux sur une relation d’ordre partiel

La recherche repose sur une relation d’équivalence comme l’égalité, tandis que le tri repose sur une relation d’ordre total

Spiegazione

La recherche se fonde sur une relation d’équivalence (égalité), alors que le tri s’appuie sur une relation d’ordre total (infériorité/égalité). L’option incorrecte inverse ces rôles.

6. Comment se déroule la recherche séquentielle dans un tableau ?

Elle compare successivement chaque élément jusqu’à trouver la valeur ou examiner tout le tableau
Elle compare uniquement des éléments contigus avant d’échanger les extrêmes
Elle commence au milieu du tableau et se déplace à gauche ou à droite selon la comparaison
Elle sélectionne directement le plus petit élément puis continue par récursion

Elle compare successivement chaque élément jusqu’à trouver la valeur ou examiner tout le tableau

Spiegazione

La recherche séquentielle parcourt le tableau élément par élément et s’arrête dès que l’objet est trouvé ou que tous les éléments ont été examinés. Elle ne nécessite pas une découpe par indices comme la dichotomique.

7. Que fait la recherche dichotomique à chaque étape sur une collection triée ?

Elle échange des éléments pour rendre la collection triée avant de chercher
Elle parcourt séquentiellement toute la collection jusqu’à trouver l’élément
Elle vérifie uniquement les valeurs situées aux extrémités
Elle découpe la collection autour d’un indice médian et poursuit dans la moitié pertinente

Elle découpe la collection autour d’un indice médian et poursuit dans la moitié pertinente

Spiegazione

La recherche dichotomique s’appuie sur une collection triée : elle compare à un médian puis continue dans la moitié inférieure ou supérieure selon le résultat. Elle ne fait pas un parcours linéaire complet.

8. Dans quel principe s’inscrit le tri à bulles ?

Il prend un élément et l’insère à la bonne place dans la partie déjà triée en arrière
Il compare des cases contiguës et fait remonter les plus petits éléments vers le début en répétant des passages
Il sélectionne un pivot et sépare le tableau en sous-parties de manière récursive
Il recherche le plus petit élément de la partie non triée puis l’échange avec le premier

Il compare des cases contiguës et fait remonter les plus petits éléments vers le début en répétant des passages

Spiegazione

Le tri à bulles compare des éléments contigus et ramène les plus petits vers le début en répétant les passages. Les autres choix correspondent à d’autres méthodes de tri.

9. Qu’est-ce qu’un fichier au sens général de l’informatique ?

Une zone de RAM utilisée uniquement pendant l’exécution
Un ensemble de données stockées sur une mémoire de masse persistante
Un registre interne du processeur contenant une seule valeur
Un pointeur vers un bloc temporaire jamais sauvegardé

Un ensemble de données stockées sur une mémoire de masse persistante

Spiegazione

Un fichier est un ensemble de données stockées sur une mémoire de masse persistante, destiné à sauvegarder ou lire des informations. Les variables du programme sont, elles, généralement en RAM.

10. Quelle distinction est correcte entre fichier texte et fichier binaire ?

Un fichier texte permet toujours un accès direct, tandis que le binaire est uniquement séquentiel
Un fichier texte est une suite de caractères à accès séquentiel, tandis qu’un fichier binaire est organisé et permet notamment l’accès direct
Un fichier texte est organisé en enregistrements et permet l’accès direct, contrairement au binaire
Un fichier binaire n’est lisible qu’en caractères, donc il est toujours séquentiel

Un fichier texte est une suite de caractères à accès séquentiel, tandis qu’un fichier binaire est organisé et permet notamment l’accès direct

Spiegazione

Un fichier texte est présenté comme une suite de caractères à accès séquentiel, tandis qu’un fichier binaire est organisé en enregistrements et permet notamment l’accès direct. L’item incorrect transforme ces rôles ou ajoute des contraintes non prévues.

11. Quel est l’ordre général des opérations lorsqu’on manipule un fichier en programmation ?

Ouverture, échange de données entre tableaux, puis fermeture
Lecture ou écriture d’abord, ensuite ouverture, et enfin fermeture
Fermeture, puis ouverture, puis lecture ou écriture
Ouverture, lecture ou écriture, puis fermeture

Ouverture, lecture ou écriture, puis fermeture

Spiegazione

La manipulation d’un fichier suit généralement : ouverture, lecture/écriture, puis fermeture. Les autres séquences inversent l’ordre logique décrit.

12. Que fait la fonction fopen si l’ouverture échoue ?

Elle renvoie la taille du fichier
Elle renvoie NULL
Elle renvoie un descripteur valide de type FILE*
Elle alloue automatiquement un tampon et lit les données

Elle renvoie NULL

Spiegazione

fopen associe un fichier physique à un descripteur FILE* et renvoie NULL si l’ouverture échoue. Les autres propositions décrivent des comportements qui ne correspondent pas à fopen.

13. Quel point caractérise le dernier maillon d’une liste simplement chaînée ?

Il contient la valeur du premier maillon
Il pointe vers le maillon précédent
Il pointe vers NULL
Il pointe vers le premier maillon

Il pointe vers NULL

Spiegazione

Dans une liste simplement chaînée, le dernier maillon ne référence aucun successeur et son pointeur vaut donc NULL. L’option « premier maillon » correspondrait à une boucle.

14. Pourquoi les maillons d’une liste chaînée ne sont-ils pas nécessairement contigus en mémoire ?

Parce que les pointeurs remplacent les données
Parce que la relation entre maillons est assurée par un pointeur
Parce que la taille du tableau est toujours fixe
Parce que le compilateur impose un placement contigu

Parce que la relation entre maillons est assurée par un pointeur

Spiegazione

Chaque maillon est relié au suivant par un pointeur, ce qui n’exige pas la contiguïté des emplacements. Confondre avec un tableau mène à l’erreur de supposer une contiguïté.

15. Quel choix décrit le mieux la différence d’accès à un élément d’indice i entre un tableau et une liste simplement chaînée ?

Les deux structures accèdent directement à l’iᵉ élément sans dépendre de i
Les deux structures utilisent des éléments contigus et n’ont pas de pointeurs
La liste accède directement à l’iᵉ élément, tandis que le tableau nécessite un parcours séquentiel
Le tableau accède directement à l’iᵉ élément, tandis que la liste nécessite un parcours depuis la tête

Le tableau accède directement à l’iᵉ élément, tandis que la liste nécessite un parcours depuis la tête

Spiegazione

Un tableau permet un accès direct à l’iᵉ élément, alors qu’une liste chaînée doit parcourir séquentiellement depuis la tête. Les deux structures ne donnent donc pas le même coût d’accès.

16. Lors de l’initialisation d’une liste simplement chaînée, que doit-on typiquement affecter à ses champs debut, fin et taille avant toute autre opération ?

debut = NULL, fin = NULL et taille = 0
debut = NULL, fin = NULL et taille = 1
debut = fin = 0 et taille = NULL
debut = fin et taille = 1

debut = NULL, fin = NULL et taille = 0

Spiegazione

L’initialisation consiste à mettre debut et fin à NULL et la taille à 0 avant toute manipulation. Cela prépare une liste vide dans un état cohérent.

17. Quel élément de structure rend la liste doublement chaînée différente de la liste simplement chaînée ?

La liste ne possède que des pointeurs debut et fin sans maillons
Chaque maillon pointe à la fois vers son successeur et vers son prédécesseur
Chaque maillon contient un index i vers le tableau correspondant
Chaque maillon pointe vers son successeur seulement

Chaque maillon pointe à la fois vers son successeur et vers son prédécesseur

Spiegazione

Une liste doublement chaînée possède, pour chaque maillon, deux liaisons : un pointeur vers le successeur et un pointeur vers le prédécesseur. Cela correspond à la définition donnée.

18. Quels champs et pointeurs sont typiquement présents dans une liste doublement chaînée et dans chacun de ses maillons ?

La liste contient debut et fin, et chaque maillon ne contient qu’un pointeur precedent
La liste contient taille et chaque maillon contient une donnée et un seul pointeur vers le suivant
La liste contient seulement taille, et chaque maillon contient deux données et un suivant
La liste contient debut, fin et taille, et chaque maillon contient une donnée, un suivant et un precedent

La liste contient debut, fin et taille, et chaque maillon contient une donnée, un suivant et un precedent

Spiegazione

La structure regroupe debut, fin et taille, tandis que chaque maillon porte une donnée et deux pointeurs (suivant et précédent). Les autres propositions omettent un pointeur ou un champ essentiel.

19. Lors d’une insertion dans une liste doublement chaînée, quel ensemble d’actions décrit le plus correctement la mise à jour des pointeurs ?

On actualise les pointeurs suivant et precedent du nouveau maillon ainsi que ceux des maillons voisins, et on met à jour debut ou fin si nécessaire
On actualise uniquement le pointeur precedent du nouveau maillon, sans modifier debut ou fin
On actualise uniquement le pointeur suivant du nouveau maillon, sans modifier les voisins
On recalcule tous les pointeurs en parcourant depuis la queue

On actualise les pointeurs suivant et precedent du nouveau maillon ainsi que ceux des maillons voisins, et on met à jour debut ou fin si nécessaire

Spiegazione

L’insertion exige de relier correctement le nouveau maillon aux voisins en ajustant suivant et precedent, puis de mettre à jour debut ou fin si l’insertion touche une extrémité. Les distracteurs ignorent ces mises à jour nécessaires.

20. Que se passe-t-il lors d’une suppression d’un élément situé à une position donnée dans une liste doublement chaînée ?

On met uniquement fin à NULL et on laisse la taille inchangée
On relie ses voisins, on récupère sa donnée, on libère la mémoire et on décrémente la taille
On supprime toujours le premier maillon puis on décale les autres
On remplace l’élément par le précédent sans modifier de pointeurs

On relie ses voisins, on récupère sa donnée, on libère la mémoire et on décrémente la taille

Spiegazione

La suppression relie les maillons voisins pour contourner l’élément ciblé, récupère sa donnée, libère sa mémoire et décrémente la taille. Les autres réponses traitent mal le recalcul des liaisons ou la taille.

21. La caractéristique LIFO permet de décrire précisément le comportement d’une pile. Que signifie-t-elle en pratique lors des extractions ?

Le dernier élément inséré est le premier extrait
L’élément extrait dépend uniquement de la taille courante
L’élément extrait est celui au début uniquement
Le premier élément inséré est le premier extrait

Le dernier élément inséré est le premier extrait

Spiegazione

Une pile est LIFO : le dernier élément inséré devient le premier extrait. En FIFO, ce serait l’inverse, d’où l’erreur des autres propositions.

22. Que fait l’empilement lors de l’ajout d’un élément dans une pile ?

Il retire le maillon pointé par debut et décrémente la taille
Il crée un maillon, y place la donnée, le relie à l’ancien debut, met à jour debut et incrémente la taille
Il remplace le dernier maillon par une nouvelle valeur
Il ajoute l’élément à la fin de la file et met fin à jour

Il crée un maillon, y place la donnée, le relie à l’ancien debut, met à jour debut et incrémente la taille

Spiegazione

L’empilement crée un maillon, l’insère au sommet en reliant à l’ancien debut, puis met à jour debut et la taille. Les distracteurs décrivent une file ou une opération de dépilement.

23. Lors d’un dépilement, quel maillon est retiré et quelles opérations sont ensuite réalisées (si la pile n’est pas vide) ?

Le maillon pointé par fin est retiré, fin avance au maillon précédent, puis la taille est incrémentée
Le maillon pointé par debut est conservé, on met simplement à jour taille
Le dernier maillon de la chaîne est retiré, fin est mise à NULL et la taille reste identique
Le maillon pointé par debut est retiré, debut avance au maillon suivant, la donnée est récupérée, le maillon est libéré et la taille est décrémentée

Le maillon pointé par debut est retiré, debut avance au maillon suivant, la donnée est récupérée, le maillon est libéré et la taille est décrémentée

Spiegazione

Le dépilement retire le maillon pointé par debut (le sommet), avance debut, récupère la donnée, libère le maillon et décrémente la taille. Les distracteurs inversent le sommet et le dernier maillon ou modifient mal la taille.

24. Quel comportement décrit une file (FIFO) en termes d’insertion et de suppression ?

Insertion en tête et suppression en queue, avec dernier entré premier sorti
Insertion et suppression au même extrémité selon la taille
Insertion en queue et suppression en tête, avec premier entré premier sorti
Insertion en queue et suppression au milieu de la chaîne

Insertion en queue et suppression en tête, avec premier entré premier sorti

Spiegazione

Une file est FIFO : le premier élément entré est le premier sorti, avec insertion en queue et suppression en tête. Les autres choix correspondent à une pile ou à une structure différente.

25. Pour vérifier qu’un mot composé de parenthèses est bien parenthésé avec une pile, à quel moment le mot doit-il être accepté ?

Quand la pile contient autant d’éléments que le nombre total de parenthèses fermantes
Quand la pile n’est jamais vide lors de chaque parenthèse fermante et qu’elle est vide à la fin
Quand la pile est vide à la fin, même si elle devient vide pendant une fermeture
Quand la pile est vide à la première fermeture réussie et reste vide ensuite

Quand la pile n’est jamais vide lors de chaque parenthèse fermante et qu’elle est vide à la fin

Spiegazione

Le mot est accepté seulement si, à chaque fermeture, la pile n’est pas vide (il existe une ouverture correspondante) et si la pile est vide à la fin. Se contenter d’une pile vide à la fin peut masquer un vidage trop tôt lors d’une fermeture.

26. Quelle affirmation décrit correctement la différence entre les notations infixée, préfixée et postfixée d’une expression ?

En notation infixée l’opérateur est après ses opérandes, en préfixée il est entre eux, en postfixée il est avant
En notation infixée l’opérateur est placé avant ou après selon la précédence, en préfixée il est entre, en postfixée il est après
En notation infixée l’opérateur est entre ses opérandes, en préfixée il est avant, et en postfixée il est après
En notation infixée l’opérateur est avant ses opérandes, en préfixée il est après, et en postfixée il est entre

En notation infixée l’opérateur est entre ses opérandes, en préfixée il est avant, et en postfixée il est après

Spiegazione

La notation infixée place l’opérateur entre les opérandes, la notation préfixée le place avant, et la notation postfixée le place après. Confondre postfixée et préfixée renverse l’ordre opérateur/waswo.

27. Lors de l’évaluation d’une expression en notation postfixée, que fait l’algorithme quand il rencontre un opérateur ?

Il dépile deux valeurs, calcule immédiatement le résultat, puis empile le résultat
Il dépile une seule valeur, la compare à l’opérateur et empile une valeur booléenne
Il lit l’opérateur et calcule avec la valeur restante sur la pile sans dépiler
Il empile l’opérateur sur la pile et attend de dépiler plus tard les opérandes

Il dépile deux valeurs, calcule immédiatement le résultat, puis empile le résultat

Spiegazione

Pour chaque opérateur en postfixe, on dépile ses opérandes, on applique l’opération, puis on empile le résultat. Les autres choix contredisent le fait que l’opérateur nécessite les deux opérandes dépilées.

28. Quelle description correspond à la conversion infixée → postfixée utilisée avec une pile d’opérateurs ?

Envoyer directement les opérandes dans la sortie, empiler les opérateurs, et dépiler les opérateurs de précédence supérieure ou égale avant d’empiler l’opérateur courant
Empiler les opérateurs mais ne jamais dépiler avant la fin de la conversion
Envoyer d’abord les opérateurs dans la sortie, puis traiter la précédence en dépilant les opérateurs de précédence strictement supérieure
Envoyer les opérateurs dans la sortie immédiatement et n’utiliser la pile que pour les parenthèses

Envoyer directement les opérandes dans la sortie, empiler les opérateurs, et dépiler les opérateurs de précédence supérieure ou égale avant d’empiler l’opérateur courant

Spiegazione

La méthode envoie les opérandes directement, empile les opérateurs, et dépile ceux dont la précédence est supérieure ou égale avant d’empiler l’opérateur courant. Les distracteurs contredisent la règle de dépilement pendant la lecture.

29. Quel énoncé définit correctement un arbre binaire ?

Un graphe orienté où chaque nœud a exactement deux successeurs
Une structure non linéaire où chaque nœud possède au plus trois fils
Une structure dynamique non linéaire où chaque nœud possède au maximum deux fils, gauche et droit
Une structure linéaire où chaque nœud a au plus un fils

Une structure dynamique non linéaire où chaque nœud possède au maximum deux fils, gauche et droit

Spiegazione

Un arbre binaire est une structure dynamique non linéaire : chaque nœud a au plus deux fils, fils gauche et fils droit. Les autres propositions imposent des contraintes (trois fils, exactement deux successeurs, linéarité) qui ne correspondent pas à la définition.

30. Dans un arbre, laquelle des propositions distingue correctement la racine, les feuilles et les nœuds internes ?

La racine a un père, une feuille a au moins un fils, et un nœud interne a toujours deux fils
La racine a un père, et toutes les autres connexions sont considérées internes
Une feuille a un père et deux fils, tandis qu’un nœud interne n’a aucun fils
La racine n’a pas de père, une feuille n’a pas de fils, et un nœud interne possède au moins un fils

La racine n’a pas de père, une feuille n’a pas de fils, et un nœud interne possède au moins un fils

Spiegazione

La racine n’a pas de père, une feuille n’a pas de fils, et un nœud interne a au moins un fils. Le distracteur confond feuille et nœud externe, ou attribue des fils aux feuilles.

31. Que contient typiquement un nœud d’un arbre binaire ?

Deux informations sans pointeurs pour relier les sous-arbres
Un pointeur vers le père et un pointeur vers le sous-arbre droit
Une information et un pointeur vers les sous-arbres gauche et droit
Une seule information et un pointeur vers le sous-arbre gauche uniquement

Une information et un pointeur vers les sous-arbres gauche et droit

Spiegazione

Un nœud d’arbre binaire contient une information et deux pointeurs : vers le sous-arbre gauche et vers le sous-arbre droit. Les autres choix omettent un pointeur ou introduisent un pointeur vers le père non prévu ici.

32. Quelle est la définition récursive correcte de la hauteur d’un arbre vide et d’un arbre non vide ?

Hauteur d’un arbre vide vaut 0 ; sinon la hauteur vaut 1 plus la somme des hauteurs des sous-arbres
Hauteur d’un arbre vide vaut 1 ; sinon la hauteur vaut la somme des hauteurs des sous-arbres gauche et droit
Hauteur d’un arbre vide vaut 0 ; sinon la hauteur vaut 1 plus le maximum des hauteurs des sous-arbres gauche et droit
Hauteur d’un arbre vide vaut 1 ; sinon la hauteur vaut le maximum des hauteurs des sous-arbres

Hauteur d’un arbre vide vaut 0 ; sinon la hauteur vaut 1 plus le maximum des hauteurs des sous-arbres gauche et droit

Spiegazione

La hauteur d’un arbre vide est 0 et celle d’un arbre non vide est 1 plus le maximum des hauteurs des sous-arbres gauche et droit. Les distracteurs remplacent le maximum par la somme ou changent la valeur de l’arbre vide.

33. Quelle relation récursive donne correctement le nombre de nœuds d’un arbre en fonction de ses sous-arbres ?

S’il est vide, il vaut 1 ; sinon il vaut la somme des nombres de nœuds des sous-arbres sans ajouter 1
S’il est vide, il vaut 0 ; sinon il vaut 1 plus la somme des nombres de nœuds des sous-arbres gauche et droit
S’il est vide, il vaut 0 ; sinon il vaut la somme des nombres de nœuds des sous-arbres gauche et droit
S’il est vide, il vaut 1 ; sinon il vaut 1 plus la somme des nombres de nœuds des sous-arbres

S’il est vide, il vaut 0 ; sinon il vaut 1 plus la somme des nombres de nœuds des sous-arbres gauche et droit

Spiegazione

Pour un arbre vide, le nombre de nœuds vaut 0 ; sinon il vaut 1 (pour le nœud courant) plus la somme des nombres de nœuds des deux sous-arbres. L’erreur fréquente consiste à compter le nœud courant même dans le cas vide.

34. Comment déterminer récursivement le nombre de feuilles d’un arbre ?

Un arbre vide a 0 feuille ; et pour un arbre non vide, le nombre de feuilles vaut toujours 1 plus la somme des feuilles des sous-arbres
Un arbre vide a 1 feuille ; et si la racine est une feuille, on renvoie 0
Un arbre vide a 0 feuille ; si la racine est une feuille, on renvoie 1 ; sinon c’est la somme des feuilles des deux sous-arbres
Un arbre vide a 0 feuille ; si la racine est une feuille, on renvoie 1 ; sinon c’est le nombre de nœuds internes des sous-arbres

Un arbre vide a 0 feuille ; si la racine est une feuille, on renvoie 1 ; sinon c’est la somme des feuilles des deux sous-arbres

Spiegazione

Le nombre de feuilles d’un arbre vide vaut 0 ; si la racine est une feuille, il vaut 1 ; sinon il est égal à la somme des feuilles des sous-arbres gauche et droit. Les distracteurs confondent le rôle d’une feuille et d’un nœud interne.

35. Quelle relation récursive décrit correctement le nombre de nœuds internes d’un arbre ?

Un arbre vide ou réduit à une feuille a 1 nœud interne ; sinon il vaut 1 plus la somme des nœuds internes des sous-arbres
Un arbre vide ou réduit à une feuille a 0 nœud interne ; sinon il vaut la somme des nœuds internes des deux sous-arbres
Un arbre vide ou réduit à une feuille a 0 nœud interne ; sinon il vaut 1 plus la somme des nœuds internes des deux sous-arbres
Un arbre vide a 0 nœud interne ; un arbre réduit à une feuille a 1 nœud interne ; sinon il vaut la somme des nœuds internes

Un arbre vide ou réduit à une feuille a 0 nœud interne ; sinon il vaut 1 plus la somme des nœuds internes des deux sous-arbres

Spiegazione

Le nombre de nœuds internes vaut 0 pour un arbre vide ou pour un arbre réduit à une feuille, sinon il vaut 1 plus la somme des nombres de nœuds internes des deux sous-arbres. Les autres choix introduisent un comptage incorrect du cas vide ou de la feuille.

36. Dans un parcours préfixe (RGD), quel ordre de traitement est appliqué aux nœuds ?

Traiter d’abord la racine, puis les deux sous-arbres sans distinction d’ordre
Traiter d’abord le fils gauche, puis le fils droit, puis la racine
Traiter d’abord la racine, puis le fils gauche, puis le fils droit
Traiter d’abord le fils gauche, puis la racine, puis le fils droit

Traiter d’abord la racine, puis le fils gauche, puis le fils droit

Spiegazione

Le parcours préfixe traite la racine avant de parcourir le sous-arbre gauche puis le sous-arbre droit. L’option qui parle d’un ordre indifférencié contredit l’ordre RGD.

37. Lorsqu’on applique un parcours infixe (GRD) sur un arbre binaire de recherche contenant des valeurs distinctes, que produit ce parcours ?

Les valeurs dans l’ordre croissant
Les valeurs dans l’ordre décroissant
Un balayage de la structure de l’arbre sans relation avec les valeurs
Les valeurs en commençant toujours par la plus grande

Les valeurs dans l’ordre croissant

Spiegazione

Sur un arbre binaire de recherche, le parcours infixe (gauche, racine, droite) renvoie les valeurs dans l’ordre croissant. Un simple « balayage » ne garantit pas un ordre par valeurs.

38. Dans un parcours postfixe (GDR), à quel moment est traité le nœud racine par rapport aux appels sur les fils ?

Avant les appels sur les sous-arbres
Immédiatement après l’appel sur le sous-arbre gauche
Après les appels sur les sous-arbres gauche puis droit
Entre les appels sur les sous-arbres gauche et droit

Après les appels sur les sous-arbres gauche puis droit

Spiegazione

Le postfixe traite le fils gauche, puis le fils droit, et enfin la racine. Les autres choix correspondent respectivement aux variantes préfixe et infixe.

39. Comment représente-t-on un arbre vide dans cette approche ?

Par une structure impossible à parcourir plutôt que par un pointeur
Par un pointeur NULL
Par un nœud dont les fils pointent vers NULL mais la racine existe
Par un nœud alloué avec une valeur spéciale d’absence

Par un pointeur NULL

Spiegazione

Un arbre vide est représenté par le pointeur NULL, c’est-à-dire qu’aucun nœud n’est présent. L’idée d’un nœud « alloué avec une valeur absente » correspond à une représentation incorrecte.

40. Lors de la création d’un arbre à partir d’un élément et de deux sous-arbres, que renvoie la fonction ?

Le nœud lui-même copié en mémoire
La hauteur de l’arbre nouvellement créé
La valeur stockée dans la racine
Le pointeur vers le nœud nouvellement créé

Le pointeur vers le nœud nouvellement créé

Spiegazione

La création alloue un nœud, lui assigne la valeur et place les sous-arbres, puis renvoie un pointeur vers ce nœud. On ne renvoie pas le nœud par valeur.

41. Quelle est la logique de l’insertion simple dans un arbre binaire ?

Chercher récursivement un fils vide ; créer l’arbre si l’arbre est vide, puis insérer sur le fils vide rencontré
Toujours insérer à droite sans comparaison de la valeur
Parcourir uniquement le sous-arbre gauche jusqu’à trouver la place
Insérer directement à la racine en remplaçant la valeur existante

Chercher récursivement un fils vide ; créer l’arbre si l’arbre est vide, puis insérer sur le fils vide rencontré

Spiegazione

L’insertion simple cherche récursivement un fils vide ; si l’arbre est vide elle le crée, et si un fils est vide elle y met le nouvel élément. Les autres stratégies contredisent l’idée de « fils vide ».

42. Dans un arbre binaire de recherche, où se trouvent les valeurs égales à la racine après insertion ?

Dans le sous-arbre droit
Dans le sous-arbre gauche
Elles remplacent la valeur de la racine
Elles ne peuvent pas être insérées

Dans le sous-arbre droit

Spiegazione

Dans cette règle, les valeurs égales à la racine sont insérées à droite. Cela évite qu’elles aillent systématiquement à gauche ou qu’elles remplacent la racine.

43. En quoi la recherche dans un arbre binaire de recherche diffère-t-elle de la recherche dans un arbre quelconque ?

Dans un arbre quelconque, on suit une seule branche ; dans un ABR, on explore les deux sous-arbres
Dans un arbre quelconque, on suit les deux sous-arbres ; dans un ABR, on suit une seule branche grâce à l’ordre
Dans un arbre quelconque, la recherche suit toujours la branche gauche
La recherche dans un ABR n’utilise aucune propriété d’ordre

Dans un arbre quelconque, on suit les deux sous-arbres ; dans un ABR, on suit une seule branche grâce à l’ordre

Spiegazione

Pour un arbre quelconque, la recherche peut explorer les deux sous-arbres, tandis que pour un arbre binaire de recherche elle suit une seule branche grâce aux valeurs ordonnées. L’option 2 et 3 renversent ou nient la propriété d’ordre.

44. Quel est le comportement de la recherche en fonction du cas traité ?

Renvoie toujours 1 dès qu’on atteint une feuille
Renvoie 0 dès que la valeur n’est pas à la racine, sans explorer les sous-arbres
Renvoie 1 si l’arbre est vide, puis recherche uniquement à gauche
Renvoie 0 si l’arbre est vide, 1 si la racine contient la valeur, sinon le résultat de la recherche dans les sous-arbres gauche et droit

Renvoie 0 si l’arbre est vide, 1 si la racine contient la valeur, sinon le résultat de la recherche dans les sous-arbres gauche et droit

Spiegazione

Dans un arbre quelconque, la recherche renvoie 0 si l’arbre est vide, 1 si la racine contient la valeur, sinon elle combine les résultats des sous-arbres gauche et droit. Les distracteurs proposent soit un mauvais cas de base, soit un arrêt prématuré.

45. Dans un arbre binaire de recherche, que fait la recherche quand la valeur cherchée est plus petite que la racine ?

Elle explore les deux sous-arbres gauche et droit
Elle explore le sous-arbre droit
Elle renvoie immédiatement 0 sans explorer
Elle explore le sous-arbre gauche

Elle explore le sous-arbre gauche

Spiegazione

En ABR, si la valeur cherchée est plus petite que la racine, la recherche poursuit dans le sous-arbre gauche. La recherche exhaustive des deux sous-arbres correspond à un arbre non ordonné.

46. La suppression complète d’un arbre, dans cette approche, correspond à quel type de parcours des nœuds ?

Un parcours par niveaux : largeur d’abord
Un parcours infixe : gauche puis racine puis droit
Un parcours préfixe : racine puis gauche puis droit
Un parcours postfixe : gauche puis droit puis racine

Un parcours postfixe : gauche puis droit puis racine

Spiegazione

La suppression complète supprime récursivement le sous-arbre gauche puis le sous-arbre droit, avant de libérer la racine : c’est donc un parcours postfixe. Les autres choix inversent l’ordre de suppression.

Ripassa con le flashcard

Memorizza le risposte con 91 flashcard su Listes, piles, files et arbres.

Qu'est-ce que l’adressage direct en programmation ?

Accéder au contenu d’une variable par son nom.

Qu'est-ce qu'un pointeur en C ?

Une variable qui contient l’adresse d’une autre variable et est typée.

Que fait l’opérateur & en langage C ?

Il récupère l’adresse d’une variable.

Vedi le flashcard →

Studia la scheda di revisione

Leggi la scheda di revisione completa su Listes, piles, files et arbres.

Vedi la scheda di revisione →

Similar courses

Crea i tuoi quiz

Importa il tuo corso e l'AI genera quiz con correzioni in 30 secondi.

Generatore di quiz