Structures de données et algorithmes

Tutoriel sur la structure des données arborescentes pour débutants

Tutoriel sur la structure des données arborescentes pour débutants

introduction

Un arbre dans un logiciel est comme un arbre biologique, mais avec les différences suivantes :

Les branches de l'arbre logiciel sont représentées par des droites. Un bon exemple d'arborescence logicielle que vous pourriez avoir utilisé est l'arborescence de répertoires du disque dur de votre ordinateur.

Il existe différents types d'arbres. Il y a l'arbre général à partir duquel d'autres arbres sont dérivés. D'autres arbres sont dérivés en introduisant des contraintes dans l'arbre général. Par exemple, vous pourriez vouloir un arbre où pas plus de deux branches émanent d'un nœud ; un tel arbre s'appellerait un arbre binaire.  Cet article décrit l'arborescence générale et comment accéder à tous ses nœuds.

Le lien hypertexte pour télécharger le code est donné en bas de cet article.

Pour comprendre les exemples de code de cet article, vous devez avoir des connaissances de base en JavaScript (ECMAScript). Si vous n'avez pas cette connaissance, vous pouvez l'obtenir sur http://www.large réseau.com/ChrysanthusForcha-1/ECMAScript-2015-Cours.htm

L'arborescence générale


« A » est le nœud racine ; c'est le nœud de premier niveau. B, C, D sont sur la deuxième ligne ; ce sont des nœuds de deuxième niveau. E, F, G, H, I, J, K sont sur la troisième ligne, et ce sont des nœuds de troisième niveau. Une quatrième ligne aurait produit des nœuds de quatrième niveau, et ainsi de suite.

Propriétés de l'arbre

- Toutes les branches pour tous les niveaux de nœuds ont une source, qui est le nœud racine.

- Un arbre a N - 1 branches, où N est le nombre total de nœuds. Le diagramme ci-dessus pour l'arbre général a 11 nœuds et 10 branches.

- Contrairement aux humains, où chaque enfant a deux parents, avec l'arbre logiciel, chaque enfant n'a qu'un seul parent. Le nœud racine est le plus grand parent ancêtre. Un parent peut avoir plusieurs enfants. Chaque nœud, à l'exception du nœud racine, est un enfant.

Vocabulaire des arbres

Parcourir tous les nœuds d'un arbre

Tous les nœuds d'un arbre sont accessibles pour lire ou modifier n'importe quelle valeur du nœud. Cependant, cela ne se fait pas arbitrairement. Il y a trois façons de le faire, qui impliquent toutes une traversée en profondeur comme suit :

1) En ordre : En termes simples, dans ce schéma, le sous-arbre de gauche est parcouru en premier ; ensuite, le nœud racine est accédé ; puis, le sous-arbre de droite est parcouru. Ce schéma est symbolisé par gauche->racine->droite. La figure 1 est réaffichée ici pour une référence facile :

En supposant qu'il y a deux frères par nœud ; puis left->root->right signifie que vous accédez d'abord au nœud le plus bas et le plus à gauche, puis au parent du nœud, puis au frère de droite. Lorsqu'il y a plus de deux frères et sœurs, prenez le premier à gauche et le reste des nœuds à droite, à droite. Pour l'arbre général ci-dessus, le sous-arbre en bas à gauche est accessible pour avoir, [EBF]. Ceci est un sous-arbre. Le parent de ce sous-arbre est A ; ainsi, A est ensuite accédé pour avoir [EBF]A. Ensuite, le sous-arbre [GCHI] est accessible pour avoir un plus grand sous-arbre, [[EBF]A[GCHI]]. Vous pouvez voir le profil gauche->racine->droite se représenter. Ce grand sous-arbre de gauche aura le sous-arbre, [JDK] à sa droite pour terminer le parcours pour obtenir, [[EBF]A[GCHI]] [JDK].

2) Pré-commande : En termes simples, dans ce schéma, le nœud racine est accessible en premier, puis le sous-arbre gauche est traversé ensuite, puis le sous-arbre droit est traversé. Ce schéma est symbolisé par root->left->right. La figure 1 est réaffichée ici pour une référence facile.

En supposant qu'il y a deux frères par nœud ; alors root->left->right signifie que vous accédez d'abord à la racine, puis à l'enfant immédiat de gauche, puis à l'enfant immédiat de droite. Lorsqu'il y a plus de deux frères et sœurs, prenez le premier à gauche et le reste des nœuds à droite, à droite. L'enfant le plus à gauche de l'enfant de gauche est le suivant auquel accéder. Pour l'arbre général ci-dessus, le sous-arbre racine est [ABCD]. A gauche de ce sous-arbre, vous avez le sous-arbre, [EF], donnant la séquence d'accès, [ABCD][EF]. A droite de ce plus grand sous-arbre, vous avez deux sous-arbres, [GHI] et [JK], donnant la séquence complète, [ABCD][EF][GHI][JK]. Vous pouvez voir le profil racine->gauche->droite se dépeignant.

3) Après la commande : En termes simples, dans ce schéma, le sous-arbre gauche est traversé en premier, puis le sous-arbre droit est traversé, puis la racine est accessible. Ce schéma est symbolisé par gauche->droite->racine. La figure 1 est réaffichée ici pour une référence facile.

Pour cet arbre les sous-arbres sont, [EFB], [GHIC], [JKD] et [A] qui forment la séquence, [EFB], [GHIC], [JKD][A]. Vous pouvez voir le profil gauche->droite->racine se représenter.

Création de l'arbre

L'arborescence ci-dessus sera créée à l'aide d'ECMAScript, qui ressemble à la dernière version de JavaScript. Chaque nœud est un tableau. Le premier élément de chaque tableau de nœuds est le parent du nœud, un autre tableau. Le reste des éléments du nœud sont les enfants du nœud, en commençant par l'enfant le plus à gauche. Il existe une carte ECMAScript qui relie chaque tableau à sa chaîne correspondante (lettre). Le premier segment de code est :