Pourquoi les arbres binaires sont-ils importants?
pourquoi étudions-nous spécifiquement les arbres binaires? Comme dans un arbre général de recherche m-way n'est pas donné aussi d'importance que les arbres binaires dans les manuels D'infrastructure de données.
l'utilisation d'un arbre binaire dépasser m-way arbres?
7 réponses
les arbres binaires sont la forme la plus simple des arbres à voies multiples donc ils sont plus faciles à étudier dans ce sens.
les arbres multidirectionnels ont des noeuds qui consistent en N
clés et N+1
pointeurs, dans le sens de:
|
+-----+-----+-----+-----+
| k00 | k01 | k02 | k03 |
+-----+-----+-----+-----+
/ | | | \
p00 p01 p02 p03 p04
pour trouver quel pointeur suivre dans une recherche, vous comparez la clé que vous recherchez avec les clés du noeud. Cet exemple ci-dessus est un arbre multidirectionnel de l'ordre-2 (Je définit l'ordre n
avoir 2n
clés et 2n+1
pointeur.)
quand vous "dégénérez" cette structure pour avoir le plus petit noeud possible, vous vous retrouvez avec une clé et deux pointeurs, votre arbre binaire classique:
|
+-----+
| k00 |
+-----+
/ \
p00 p01
quand je suis allé à l'université( et j'avoue que c'était il y a un moment), nous avons étudié les arbres binaires premier, simplement parce que les algorithmes étaient élégants. La recherche était un simple noeud de comparaison et de choisir l'un des deux sous-arbres. L'Insertion et la suppression ont également été relativement facile.
Puis nous sommes allés sur équilibre arbres binaires, où la recherche était exactement la même, mais l'insertion et la suppression étaient un peu plus compliquées, impliquant la "rotation" des sous-arbres à travers la racine du sous-arbre lorsque cela était nécessaire pour le maintenir en équilibre.
cela a ensuite été suivi par des arbres multidirectionnels non équilibrés pour obtenir le concept de recherche dans un noeud une fois que vous avez trouvé le noeud correct puis, enfin, les arbres multidirectionnels équilibrés qui étaient essentiellement les mêmes que les arbres binaires, mais avec la même complexité ajoutée d'une recherche séquentielle, ainsi que l'insertion ou la suppression dans le noeud et la combinaison et le crachage des noeuds eux-mêmes.
À chacune de ces étapes vous simplement ajouté un peu plus de complexité des algorithmes. Je ne me souviens pas que beaucoup de gens aient eu des problèmes avec cette progression donc peut-être que tous les manuels que vous mentionnez sont juste au niveau de démarrage.
je n'ai jamais vraiment trouvé plusieurs arbres plus utile que des binaires arbres sauf dans une situation très spécifique. C'est quand vous lisez les noeuds de l'arbre à partir d'un milieu lent comme le disque et vous avez optimisé pour les secteurs/cluster/blocs de tailles.
nous avons développé une implémentation d'arbre multi-way sous OS / 2 (montrant mon âge ici) qui a crié le long, en s'assurant que les noeuds étaient identiques en taille aux blocs de disque sous-jacents. Même si cela pouvait entraîner une perte d'espace, les améliorations de la vitesse en valaient la peine.
Pour la mémoire des trucs, les arbres binaires ont tous les avantages du multi-voies sans aucune des complications supplémentaires (devant combiner la recherche séquentielle d'un noeud avec la sélection de sous-arbres).
les arbres binaires se résument comme suit: "doit-on se déplacer à gauche ou à droite?", multi-voies sont " Où est la clé dans ce noeud afin que nous puissions choisir le sous-arbre?".
les arbres binaires sont un concept simple, ils sont faciles à comprendre, faciles à mettre en œuvre, et fonctionnent bien et rapidement -- je suppose que c'est suffisant pour les enseigner et/ou les utiliser.
un avantage des arbres binaires sur les arbres "n-ary" est que les traverser se résume souvent à un simple problème de décision oui/non, comme dans binaire partitionnement de l'espace.
parce que les structures de données arborescentes sont souvent utilisées pour organiser des éléments ordonnés, E. g: a > b > C. Si vos articles qui sont insérés dans les arbres sont ordonnés, tout ce dont vous avez besoin est de deux branches à chaque noeud pour diviser les éléments qui sont plus grands dans le sous-arbre de gauche, et les éléments qui sont plus petits dans le sous-arbre de droite.
C'est pourquoi les arbres binaires sont beaucoup plus répandues que marie arbres. Cela n'a rien à voir avec la facilité de prendre une décision oui / non par rapport à un m-ary la décision!
ajouter à toutes les réponses ci-dessus, un arbre de n'importe quelle arité peut être représenté par un arbre binaire (où le lien gauche va au premier enfant du noeud, et le lien droit va au prochain "frère").
je ne vais pas être trop techi ici.. parce que la question Est de savoir pourquoi L'arbre binaire est si important dans L'infrastructure de données. Arbre binaire,, signifie arbre basé sur T/F, Oui / Non, etc. Dire la combinaison de Duo. Pratiquement, nous sommes confrontés à la situation où nous devons décider oui ou non.. Vrai ou faux. Arbre binaire représente une telle situation. Les logiciels sur lesquels nous travaillons,,, sont les solutions qui vont utiliser les structures de données utilisées en interne pour résoudre les scénarios de la vie réelle.. C'est pourquoi arbre binaire entrée en image et est couramment utilisé et même trop important. Les autres arbres sont d'autres raffinements ou les complexités ajoutées pour les assortir avec les situations typiques. Pour démarrer l'arbre binaire est toujours important.
par exemple, les arbres binaires sont utilisés pour le tri des tas (tas binaire). C'est une façon de trier les données très rapidement de sorte que le plus grand (ou le plus bas) article est toujours à l'avant. Ceci est utilisé par exemple dans AI (algorithme a*).