Si on me donne un certain nombre de nombres (que je stocke dans un arbre de recherche binaire équilibré pour la facilité), alors je veux répondre à une requête qui me demande Pour savoir quel est le plus petit nombre entre [A, B], quel serait un algorithme rapide pour effectuer cette tâche? Techniquement, je pourrais traverser l'arbre de la racine en cherchant A (ou un nombre immédiatement supérieur à celui si A n'est pas présent), que revenir en arrière en cherchant B (ou un nombre plus petit que B), et en faisant cela je pourrais garde un compteur pour moi, pour déterminer quand je serais au numéro it. Mais cela ne me semble pas optimal. Puis-je effectuer cette opération sur O (log n), hauteur de l'arbre que j'utilise pour stocker l'ensemble de nombres universel?Meilleure façon de sélectionner le plus petit nombre d'une séquence de nombres délimitée
Merci
Je pense que je reçois quelque chose de mal ici, mais ne pouvez-vous pas simplement rechercher la valeur immédiatement supérieure à A, puis juste traverser 'i'-1 fois? C'est un arbre de recherche binaire, donc c'est trié, n'est-ce pas? J'imagine votre arbre comme ceci: http://en.wikipedia.org/wiki/File:AVLtreef.svg - et dans cet exemple, f.e. chercher le 4ème plus petit nombre dans [15,60] conduirait au résultat 50, non? – schnaader
@schnaader Je suppose, il veut chercher 50000-ème nombre dans un arbre de taille 100000 :) Mais votre chemin est certainement optimal si _k_ est petit. –
@Nikita: Merci pour la clarification. – schnaader