Arbre de recherche binaire (BST) avec exemple

Quโ€™est-ce quโ€™un arbre de recherche binaire ?

L'arbre de recherche binaire est un algorithme avancรฉ utilisรฉ pour analyser le nล“ud, ses branches gauche et droite, qui sont modรฉlisรฉes dans une structure arborescente et renvoyer la valeur. Le BST est conรงu sur l'architecture d'un algorithme de recherche binaire de base ; par consรฉquent, il permet des recherches, des insertions et des suppressions de nล“uds plus rapides. Cela rend le programme vraiment rapide et prรฉcis.

Attributs de l'arbre de recherche binaire

Un BST est composรฉ de plusieurs nล“uds et se compose des attributs suivants :

  • Les nล“uds de l'arbre sont reprรฉsentรฉs dans une relation parent-enfant
  • Chaque nล“ud parent peut avoir zรฉro nล“ud enfant ou un maximum de deux sous-nล“uds ou sous-arbres sur les cรดtรฉs gauche et droit.
  • Chaque sous-arbre, รฉgalement appelรฉ arbre de recherche binaire, possรจde des sous-branches ร  droite et ร  gauche.
  • Tous les nล“uds sont liรฉs par des paires clรฉ-valeur.
  • Les clรฉs des nล“uds prรฉsents sur le sous-arbre de gauche sont plus petites que les clรฉs de leur nล“ud parent
  • De mรชme, les clรฉs des nล“uds du sous-arbre gauche ont des valeurs infรฉrieures ร  celles de leur nล“ud parent.

Attributs de l'arbre de recherche binaire

  1. Il y a le nล“ud principal ou niveau parent 11. En dessous, il y a des nล“uds/branches gauche et droit avec leurs propres valeurs clรฉs
  2. Le sous-arbre de droite a des valeurs de clรฉ supรฉrieures ร  celles du nล“ud parent
  3. Le sous-arbre de gauche a des valeurs supรฉrieures ร  celles du nล“ud parent

Pourquoi avons-nous besoin dโ€™un arbre de recherche binaire ?

  • Les deux principaux facteurs qui font de l'arbre de recherche binaire une solution optimale ร  tous les problรจmes du monde rรฉel sont la vitesse et la prรฉcision.
  • Du fait que la recherche binaire se fait sous la forme d'une branche avec des relations parent-enfant, l'algorithme sait ร  quel endroit de l'arborescence les รฉlรฉments doivent รชtre recherchรฉs. Cela rรฉduit le nombre de comparaisons clรฉ-valeur que le programme doit effectuer pour localiser l'รฉlรฉment souhaitรฉ.
  • De plus, si l'รฉlรฉment ร  rechercher est supรฉrieur ou infรฉrieur au nล“ud parent, le nล“ud sait quel cรดtรฉ de l'arborescence rechercher. La raison en est que le sous-arbre de gauche est toujours infรฉrieur au nล“ud parent et que le sous-arbre de droite a toujours des valeurs รฉgales ou supรฉrieures ร  celles du nล“ud parent.
  • BST est couramment utilisรฉ pour mettre en ล“uvre des recherches complexes, des logiques de jeu robustes, des activitรฉs de saisie semi-automatique et des graphiques.
  • L'algorithme prend en charge efficacement des opรฉrations telles que la recherche, l'insertion et la suppression.

Types d'arbres binaires

Il existe trois types d'arbres binaires :

  • Arbre binaire complet : Tous les niveaux des arbres sont remplis d'exceptions possibles du dernier niveau. De mรชme, tous les nล“uds sont pleins, dirigeant l'extrรชme gauche.
  • Arbre binaire complet : Tous les nล“uds ont 2 nล“uds enfants sauf la feuille.
  • Arbre binaire รฉquilibrรฉ ou parfait : Dans l'arbre, tous les nล“uds ont deux enfants. De plus, il y a le mรชme niveau pour chaque sous-nล“ud.

En savoir plus sur le Arbre binaire dans la structure des donnรฉes Si tu es intรฉressรฉ.

Comment fonctionne lโ€™arbre de recherche binaire ?

L'arborescence a toujours un nล“ud racine et d'autres nล“uds enfants, que ce soit ร  gauche ou ร  droite. L'algorithme effectue toutes les opรฉrations en comparant les valeurs avec la racine et ses autres nล“uds enfants dans le sous-arbre gauche ou droit en consรฉquence.

En fonction de l'รฉlรฉment ร  insรฉrer, rechercher ou supprimer, aprรจs la comparaison, l'algorithme peut facilement supprimer le sous-arbre gauche ou droit du nล“ud racine.

BST propose principalement les trois types d'opรฉrations suivants pour votre utilisation :

  • Rechercher : recherche l'รฉlรฉment dans l'arbre binaire
  • Insรฉrer : ajoute un รฉlรฉment ร  l'arbre binaire
  • Supprimer : supprime l'รฉlรฉment d'un arbre binaire

Chaque opรฉration a sa propre structure et mรฉthode dโ€™exรฉcution/analyse, mais la plus complexe de toutes est lโ€™opรฉration Supprimer.

Rechercher Operaproduction

Commencez toujours l'analyse de l'arbre au niveau du nล“ud racine, puis dรฉplacez-vous plus loin vers le sous-arbre droit ou gauche du nล“ud racine en fonction de l'รฉlรฉment ร  localiser qui est infรฉrieur ou supรฉrieur ร  la racine.

Rechercher Operaproduction

  1. L'รฉlรฉment ร  rechercher est 10
  2. Comparez l'รฉlรฉment avec le nล“ud racine 12, 10 <12, vous vous dรฉplacez donc vers le sous-arbre de gauche. Pas besoin d'analyser le sous-arbre droit
  3. Comparez maintenant 10 avec le nล“ud 7, 10 > 7, alors dรฉplacez-vous vers le sous-arbre de droite
  4. Comparez ensuite 10 avec le nล“ud suivant, qui est 9, 10 > 9, regardez dans le sous-arbre enfant de droite
  5. 10 correspond ร  la valeur dans le nล“ud, 10 = 10, renvoie la valeur ร  l'utilisateur.

Pseudo-code pour la recherche dans BST

search(element, root)
     if !root
    	return -1
     if root.value == element
    	return 1
     if root.value < element
    	search(element, root.right)
      else
    	search(element, root.left)

insรฉrer Operaproduction

Il sโ€™agit dโ€™une opรฉration trรจs simple. Tout dโ€™abord, le nล“ud racine est insรฉrรฉ, puis la valeur suivante est comparรฉe au nล“ud racine. Si la valeur est supรฉrieure ร  la racine, elle est ajoutรฉe au sous-arbre de droite, et si elle est infรฉrieure ร  la racine, elle est ajoutรฉe au sous-arbre de gauche.

insรฉrer Operaproduction

  1. Il existe une liste de 6 รฉlรฉments qui doivent รชtre insรฉrรฉs dans un BST dans l'ordre de gauche ร  droite
  2. Insรฉrez 12 comme nล“ud racine et comparez les valeurs suivantes 7 et 9 pour les insรฉrer en consรฉquence dans les sous-arbres droit et gauche.
  3. Comparez les valeurs restantes 19, 5 et 10 avec le nล“ud racine 12 et placez-les en consรฉquence. 19 > 12, placez-le comme enfant droit de 12, 5 < 12 et 5 < 7, placez-le donc comme enfant gauche de 7. Comparez maintenant 10, 10 est < 12 et 10 est > 7 et 10 est > 9, placez 10. comme sous-arbre droit de 9.

Pseudocode pour l'insertion d'un nล“ud dans BST

insert (element, root)
    Node x = root
    Node y = NULL
    while x:
    	y = x
    if x.value < element.value
        x = x.right
    else
        x = x.left
    if y.value < element
    	y.right = element
    else
    	y.left = element

Supprimer Operations

Pour supprimer un nล“ud d'un BST, il existe certains cas, par exemple la suppression d'une racine ou la suppression d'un nล“ud feuille. De plus, aprรจs avoir supprimรฉ une racine, nous devons penser au nล“ud racine.

Supposons que nous voulions supprimer un nล“ud feuille, nous pouvons simplement le supprimer, mais si nous voulons supprimer une racine, nous devons remplacer la valeur de la racine par un autre nล“ud. Prenons l'exemple suivant :

  • Cas 1- Nล“ud avec zรฉro enfant : c'est la situation la plus simple, il suffit de supprimer le nล“ud qui n'a plus d'enfant ร  droite ou ร  gauche.
  • Cas 2 โ€“ Nล“ud avec un enfant : une fois le nล“ud supprimรฉ, connectez simplement son nล“ud enfant au nล“ud parent de la valeur supprimรฉe.
  • Cas 3 Nล“ud avec deux enfants : c'est la situation la plus difficile, et elle fonctionne selon les deux rรจgles suivantes
  • 3a โ€“ Dans l'ordre prรฉdรฉcesseur : vous devez supprimer le nล“ud avec deux enfants et le remplacer par la plus grande valeur du sous-arbre gauche du nล“ud supprimรฉ
  • 3b โ€“ Dans l'ordre successeur : vous devez supprimer le nล“ud avec deux enfants et le remplacer par la plus grande valeur dans le sous-arbre droit du nล“ud supprimรฉ.

Supprimer  Operations

  1. Il s'agit du premier cas de suppression dans lequel vous supprimez un nล“ud qui n'a pas d'enfant. Comme vous pouvez le voir sur le diagramme, 19, 10 et 5 nโ€™ont pas dโ€™enfants. Mais nous supprimerons le 19.
  2. Supprimez la valeur 19 et supprimez le lien du nล“ud.
  3. Voir la nouvelle structure du BST sans 19

Supprimer  Operations

  1. Il s'agit du deuxiรจme cas de suppression dans lequel vous supprimez un nล“ud qui a 1 enfant, comme vous pouvez le voir sur le diagramme que 9 a un enfant.
  2. Supprimez le nล“ud 9 et remplacez-le par son enfant 10 et ajoutez un lien de 7 ร  10
  3. Voir la nouvelle structure du BST sans 9

Supprimer  Operations

  1. Ici, vous supprimerez le nล“ud 12 qui a deux enfants
  2. La suppression du nล“ud se produira sur la base de la rรจgle du prรฉdรฉcesseur dans l'ordre, ce qui signifie que le plus grand รฉlรฉment du sous-arbre gauche de 12 le remplacera.
  3. Supprimez le nล“ud 12 et remplacez-le par 10 car c'est la plus grande valeur du sous-arbre de gauche
  4. Visualiser la nouvelle structure du BST aprรจs suppression 12

Supprimer  Operations

  1. 1 Supprimer un nล“ud 12 qui a deux enfants
  2. 2 La suppression du nล“ud se produira sur la base de la rรจgle In Order Successor, ce qui signifie que le plus grand รฉlรฉment du sous-arbre droit de 12 le remplacera.
  3. 3 Supprimez le nล“ud 12 et remplacez-le par 19 car c'est la plus grande valeur du sous-arbre de droite
  4. 4 Visualisez la nouvelle structure du BST aprรจs suppression 12

Pseudo-code pour supprimer un nล“ud

delete (value, root):
    Node x = root
    Node y = NULL
# searching the node
    while x:
    	y = x
    if x.value < value
        x = x.right
    else if x.value > value
        x = x.left
    else if value == x
        break
# if the node is not null, then replace it with successor
    if y.left or y.right:
    	newNode = GetInOrderSuccessor(y)
    	root.value = newNode.value
# After copying the value of successor to the root #we're deleting the successor
    	free(newNode)
    else
    	free(y)

Conditions importantes

  • Insรฉrer : Insรจre un รฉlรฉment dans un arbre/crรฉe un arbre.
  • Rechercher : recherche un รฉlรฉment dans une arborescence.
  • Traversรฉe de prรฉcommande : parcourt un arbre de maniรจre prรฉcommandรฉe.
  • Traversรฉe dans l'ordre : parcourt un arbre dans l'ordre.
  • Traversรฉe post-commande : traverse un arbre de maniรจre post-commande.

Rรฉsumรฉ

  • BST est un algorithme de niveau avancรฉ qui effectue diverses opรฉrations basรฉes sur la comparaison des valeurs des nล“uds avec le nล“ud racine.
  • N'importe quel point d'une hiรฉrarchie parent-enfant reprรฉsente le nล“ud. Au moins un nล“ud parent ou racine reste prรฉsent ร  tout moment.
  • Il y a un sous-arbre gauche et un sous-arbre droit. Le sous-arbre de gauche contient des valeurs infรฉrieures ร  celles du nล“ud racine. Cependant, le sous-arbre de droite contient une valeur supรฉrieure ร  celle du nล“ud racine.
  • Chaque nล“ud peut avoir zรฉro, un ou deux enfants.
  • Un arbre de recherche binaire facilite les opรฉrations primaires telles que la recherche, l'insertion et la suppression.
  • La suppression รฉtant la plus complexe, elle comporte plusieurs cas, par exemple un nล“ud sans enfant, un nล“ud avec un enfant et un nล“ud avec deux enfants.
  • L'algorithme est utilisรฉ dans des solutions du monde rรฉel telles que les jeux, les donnรฉes de saisie semi-automatique et les graphiques.

Rรฉsumez cet article avec :