Existe-t-il un module pour AVL ou Red-Black ou un autre type d'arbre binaire équilibré dans la bibliothèque standard de Python? J'ai essayé d'en trouver un, mais sans succès (je suis relativement nouveau sur Python).
Non, il n'y a pas d'arbre binaire équilibré dans stdlib. Cependant, d'après vos commentaires, il semble que vous ayez d'autres options:
O(log n)
. Si la recherche est tout ce dont vous avez besoin et que vos données sont déjà triées, le module bisect
fournit un algorithme de recherche binaire pour les listes.Si aucune des solutions ne vous convient, vous devrez vous rendre sur un module tiers ou implémenter le vôtre.
il n'y a rien de ce genre dans stdlib, pour autant que je puisse voir , mais n rapide coup d'œil à pypi propose quelques alternatives :
Il y a eu quelques cas où j'ai trouvé le package heapq (dans la bibliothèque standard) utile, surtout si à un moment donné vous voulez O(1) = temps d'accès au plus petit élément de votre collection.
Pour moi, je suivais une collection de minuteries et je voulais généralement vérifier si le plus petit temps (celui qui devait être exécuté en premier) était prêt à partir.
Il existe un nouveau package appelé "bintrees" qui prend en charge les arbres équilibrés, AVL et RB. Vous pouvez le trouver ici .
Découvrez également le projet Tri des conteneurs .
Voici un discours PyCon à ce sujet: https://www.youtube.com/watch?v=7z2Ki44Vs4E
Non, mais il y a AVL Tree Objects for Python (très ancien!) Et un projet (fermé) sur SourceForge - avl-trees pour Python .