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.
- 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
- Le sous-arbre de droite a des valeurs de clรฉ supรฉrieures ร celles du nลud parent
- 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.
- L'รฉlรฉment ร rechercher est 10
- 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
- Comparez maintenant 10 avec le nลud 7, 10 > 7, alors dรฉplacez-vous vers le sous-arbre de droite
- Comparez ensuite 10 avec le nลud suivant, qui est 9, 10 > 9, regardez dans le sous-arbre enfant de droite
- 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.
- Il existe une liste de 6 รฉlรฉments qui doivent รชtre insรฉrรฉs dans un BST dans l'ordre de gauche ร droite
- 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.
- 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รฉ.
- 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.
- Supprimez la valeur 19 et supprimez le lien du nลud.
- Voir la nouvelle structure du BST sans 19
- 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.
- Supprimez le nลud 9 et remplacez-le par son enfant 10 et ajoutez un lien de 7 ร 10
- Voir la nouvelle structure du BST sans 9
- Ici, vous supprimerez le nลud 12 qui a deux enfants
- 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.
- Supprimez le nลud 12 et remplacez-le par 10 car c'est la plus grande valeur du sous-arbre de gauche
- Visualiser la nouvelle structure du BST aprรจs suppression 12
- 1 Supprimer un nลud 12 qui a deux enfants
- 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 Supprimez le nลud 12 et remplacez-le par 19 car c'est la plus grande valeur du sous-arbre de droite
- 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.







