De nombreux algorithmes spécifieront que les doublons sont exclus. Par exemple, les exemples d'algorithmes dans le livre Algorithmes du MIT présentent généralement des exemples sans doublons. Il est assez simple d'implémenter des doublons (soit sous forme de liste au nœud, soit dans une direction particulière).
La plupart (que j'ai vu) spécifient les enfants de gauche comme <= et les enfants de droite comme>. En pratique, un BST qui permet aux enfants de droite ou de gauche d'être égaux au nœud racine, nécessitera des étapes de calcul supplémentaires pour terminer une recherche où les nœuds en double sont autorisés.
Il est préférable d'utiliser une liste au niveau du nœud pour stocker les doublons, car l'insertion d'une valeur '=' d'un côté d'un nœud nécessite de réécrire l'arborescence de ce côté pour placer le nœud en tant qu'enfant, ou le nœud est placé en grand -enfant, à un moment donné ci-dessous, ce qui élimine une partie de l'efficacité de la recherche.
Vous devez vous rappeler que la plupart des exemples de classe sont simplifiés pour décrire et présenter le concept. Ils ne valent pas la peine d'être accroupis dans de nombreuses situations du monde réel. Mais la déclaration, "chaque élément a une clé et aucun élément n'a la même clé", n'est pas violée par l'utilisation d'une liste au nœud d'élément.
Alors allez avec ce que dit votre livre sur les structures de données!
Éditer:
La définition universelle d'un arbre de recherche binaire implique le stockage et la recherche d'une clé basée sur la traversée d'une structure de données dans l'une des deux directions. Au sens pragmatique, cela signifie que si la valeur est <>, vous parcourez la structure de données dans l'une des deux «directions». Donc, dans ce sens, les valeurs en double n'ont aucun sens.
Ceci est différent de BSP, ou partition de recherche binaire, mais pas si différent. L'algorithme de recherche a l'une des deux directions pour `` voyager '', ou il est fait (avec succès ou non). Je m'excuse donc que ma réponse initiale n'ait pas abordé le concept de `` définition universelle '', car les doublons sont vraiment distincts sujet (quelque chose que vous traitez après une recherche réussie, pas dans le cadre de la recherche binaire.)