2-3-4 arbre

Un arbre du 2-3-4, également appelé un arbre 2-4, dans le de l'informatique est un arbre binaire de l'ordre 4.

Comme les arbres binaires généralement 2-3-4 arbres sont un genre de structure de données de individu-équilibrage qui peut être employé comme dictionnaire . Ils peuvent rechercher, s'insérer et supprimer dans le temps du O ( n de notation), où le n est le nombre d'éléments dans l'arbre. il est relativement difficile mettre en application 2-3-4 arbres dans la plupart des langages de programmation en raison de le grand nombre de cas spéciaux impliqués en fonctionnement sur l'arbre. des arbres Rouge-noirs de que (voir ci-dessous) sont plus simples pour mettre en application, ainsi ils tendent à être employés à la place.

Fond

2-3-4 arbres stockent des données en tant que différents articles appelés les éléments de . Ceux-ci sont groupés dans les noeuds de . Chaque noeud est l'un ou l'autre
2 un noeud, c. il contient 1 élément et a 2 enfants, ou
3 un noeud, c. il contient 2 éléments et a 3 enfants, ou
4 un noeud, c. il contient 3 éléments et a 4 enfants.

Insertion

Pour passer dans un arbre 2-3-4, première recherche dans l'arbre pour la valeur à atteindre. Une fois dans l'endroit correct, insérer la valeur dans le noeud. Toutes les fois qu'un arbre contient un " ; node" 4 ; l'arbre doit être rééquilibré. Un exemple de ceci qui rééquilibre est démontré ci-dessous :

Commencer comme exemple par cet arbre 2-3-4. L'arbre contient un noeud de racine avec trois noeuds d'enfant. Insérer maintenant le " ; 25" ; dans l'arbre. Puisque le noeud de droite inférieure est un noeud 4, une rotation est exigée. Casser le noeud 4 (22, 24, 29) en déplaçant le 24 jusqu'au noeud de parent. Dédoubler le noeud 3 (22.29) pour devenir une partie des 4 enfants du noeud 3. Comparer le noeud 25 au noeud de parent et se déplacer bien. Insérer alors dans le noeud. L'arbre est maintenant rééquilibré. Une autre valeur peut être insérée dans l'arbre.

< ! ----> < ! -- L'image supprimée a enlevé : -->

Formule de pour le
l'insertion Recherche de valeur dans l'arbre
Ajouter le nouvel article à l'arbre
Vérifier le débordement dans tout l'arbre et rééquilibrer

Sources :
Ford, William et William Topp. Structures de données avec C++ Using STL, deuxième édition. Fleuve supérieur de selle, New Jersey : Apprenti Hall, 2002. ISBN : 0-13-085850-1. Pagine 683-290 de 12.6:2 de section - 3-4 arbres
Plus d'information sur l'arbre 2-3-4

Suppression

La suppression est peu une plus rusée que l'insertion. Plusieurs différents cas doivent être pris en compte à. Dans la discussion suivante, les noeuds de l'enfant de mêmes parents de sont ceux qui partagent le même parent.

Affaire 1 de : D'abord l'élément à être les besoins supprimés d'être trouvés. Puis, le noeud doit être réduit au cas où l'article supprimer est au fond de l'arbre. Après, trouver l'article qui le précède dans le traversal de dans-ordre, et permuter les deux éléments. Enlever maintenant l'article.

Affaire 2 de : enlevant de 2 noeuds

Dans 2 noeuds, les résultats précédents de procédé dans le noeud sans des articles. Ceci s'appelle le courant de fond. Afin de résoudre ceci, un article est tiré du noeud de parent dans le noeud où l'article est enlevé, et l'offre d'emploi créée dans le noeud de parent est remplacée par un article d'un noeud d'enfant de mêmes parents. Ceci s'appelle le transfert de .

Complications additionnelles de en enlevant des articles de 2 noeuds :

Si les enfants de mêmes parents sont 2 noeuds eux-mêmes, le courant de fond se produit toujours, parce que maintenant l'enfant de mêmes parents n'a aucun élément. Pour résoudre ce problème, deux noeuds d'enfant de mêmes parents sont fusionnés (après la traction de l'élément du noeud de parent). Ceci s'appelle la fusion de .

Si le parent est un noeud 2, le courant de fond se produira sur le noeud de parent. Ceci est résolu en employant les méthodes ci-dessus. Ceci peut faire soutenir le noeud différent de parent le courant de fond pendant que des suppressions et les remplacements sont faits, désigné sous le nom du de courant de fond cascadant .

La suppression dans un arbre 2-3-4 est O (notation n), tandis que temps constant de transfert et de fusion, O (1).


sources

Conversion en arbre noir rouge graphiquement

Graphiquement la conversion d'un arbre 2-3-4 en arbre noir rouge est assez simple. Prenons l'exemple de la section d'insertion : Convertir le parent de 4 noeuds en trois noeuds rouge-noirs où le milieu est un noeud noir et les valeurs 10 et 24 sont les enfants rouges. L'enfant gauche du parent de 4 noeuds deviendrait l'enfant gauche du noeud 10. De même, le noeud 17 entrerait dans la position du bon noeud pour le noeud 10 et ainsi de suite. Maintenant, convertir les enfants du noeud 3 du noeud 24. Puisque c'est un noeud 3, vous pouvez choisir lesquels vous voulez en tant que parent et quel en tant qu'enfant. Le parent sera coloré noir puisque c'est l'enfant du noeud rouge 24 et l'enfant sera coloré noir puisque c'est un enfant d'un noeud rouge. Nous avons le noeud choisi 29 à être le parent et 25 à être l'enfant. Maintenant, vous avez converti un arbre 2-3-4 en arbre noir rouge.

Sources :
Ford, William et William Topp. Structures de données avec C++ Using STL, deuxième édition. Fleuve supérieur de selle, New Jersey : Pretice Hall, 2002. ISBN : 0-13-085850-1. Pagine 690-701 de la section 12.7 : Arbres Rouge-Noirs

Problèmes avec 2-3-4 arbres

Au delà de la complexité de créer un arbre 2-3-4, si mis en application, il gaspille un grand nombre de mémoire. Chaque noeud doit avoir l'espace pour jusqu'à 7 valeurs de données : 3 valeurs tenues et 4 indicateurs sur ses enfants. Ainsi, chaque nouveau noeud doit assigner la mémoire pour toutes ces valeurs quoiqu'une majorité de noeuds ne soient pas 4 noeuds. Ainsi, plusieurs des valeurs sont inutilisées.

Par exemple, s'il y avait des noeuds de n dans l'arbre 2-3-4, l'ordinateur devrait assigner les indicateurs 4*n. Puisque chaque noeud a un parent indiquer lui excepté la racine, l'arbre doit également avoir les bords n-1. Le nombre d'indicateurs inutilisés serait équivalent à : 4n - (n -1) = 3n +1 ou 3/4th des indicateurs étant employés. La raison de mettre en application les arbres équilibrés est d'avoir un temps de recherche plus rapide comparé à celui des arbres dégénérés. Cependant, puisque tellement de la mémoire est gaspillée en mettant en application un arbre 2-3-4, elle fait courir le programme plus lent, ainsi l'arbre rouge-noir serait une meilleure exécution. Cependant, l'étude d'environ 2-3-4 arbres permet un meilleur arrangement de l'arbre noir rouge pour des utilisateurs de première fois.

Sources :
Ford, William et William Topp. Structures de données avec C++ Using STL, deuxième édition. Fleuve supérieur de selle, New Jersey : Pretice Hall, 2002. ISBN : 0-13-085850-1.6:2 de section - 3-4 arbres

Voir également


arbre du 2 ou 3 de

.

Random links:Von der Erde de Das Lied | MARS (cryptographie) | Neoformans de cryptococcus | John Wilfred Stanier | Legs à l'avenir | 2-3-4_árbol