Personnellement , je pense que la meilleure façon de le faire serait d'aller pour un arbre de recherche binaire aléatoire comme un Treap . Cela ne signifie pas une garantie absolue que l'arbre sera équilibré, mais avec une forte probabilité de l'arbre aura un bon facteur d'équilibre. Un Treap fonctionne en augmentant chaque élément de l'arbre avec un nombre uniformément aléatoire, puis faire en sorte que l'arbre est un arbre de recherche binaire par rapport aux clés et un tas par rapport aux valeurs aléatoires uniformes. L' insertion dans un Treap est extrêmement facile:
- Choisissez un nombre aléatoire pour attribuer à l'élément nouvellement ajouté.
- Insérer l'élément dans le BST utilisant insertion standard BST.
- Alors que la clé de l'élément nouvellement inséré est supérieure à la clé de sa mère, effectuer une rotation de l'arbre pour amener le nouvel élément au-dessus de son parent.
Cette dernière étape est le seul vraiment dur, mais si vous avez eu un certain temps pour le travailler sur un tableau blanc, je suis sûr que vous pouvez mettre en œuvre ce sur la volée dans une interview.
Une autre option qui pourrait fonctionner serait d'utiliser un arbre évasement . Il est un autre type de BST rapide qui peut être mis en œuvre en supposant que vous avez une fonction standard d'insertion BST et la capacité de faire la rotation des arbres. Il est important, les arbres ébrasés sont extrêmement rapides dans la pratique, et on sait que ce sont (à un facteur constant) au moins aussi bon que tout autre arbre de recherche binaire statique.
Selon ce qui signifie « arbre de recherche », vous pouvez également envisager de stocker les entiers dans une structure optimisée pour la recherche d'entiers. Par exemple, vous pouvez utiliser une structure arborescente de bits pour stocker les entiers, qui charge la recherche dans le temps proportionnel au nombre de bits en un mot de la machine. Cela peut être mis en œuvre tout à fait bien en utilisant une fonction récursive pour regarder par- dessus les bits, et ne nécessite aucune sorte de rotations. Si vous avez besoin pour faire sauter une mise en œuvre en quinze minutes, et si l'intervieweur vous permet de dévier des arbres binaires de recherche standard, cela pourrait être une excellente solution.
J'espère que cela t'aides!