Pythonの標準ライブラリにAVLやRed-Black、または他のタイプのバランスの取れたバイナリツリーのモジュールはありますか?私はそれを見つけようとしましたが、失敗しました(私はPythonが比較的新しいです)。
いいえ、stdlibにはバランスの取れたバイナリツリーはありません。ただし、コメントからは、他のオプションがあるかもしれません。
O(log n)
検索のリストではなく、BSTが必要だと言います。検索が必要なだけで、データが既にソートされている場合、bisect
モジュールはリストのバイナリ検索アルゴリズムを提供します。どちらのソリューションもうまく機能しない場合は、サードパーティのモジュールにアクセスするか、独自のモジュールを実装する必要があります。
stdlibにはこの種のものはありません、 私が見ることができる限り ですが、 pypiをすばやく見ると表示されますいくつかの選択肢 :
heapq package (標準ライブラリ内)が有用であることがわかったいくつかの例がありました。特に、任意の時点でO(1) =コレクション内の最小要素へのアクセス時間。
私にとっては、タイマーのコレクションを追跡していましたが、通常は、最小時間(最初に実行される時間)がまだ準備ができているかどうかを確認することに興味がありました。
「bintrees」と呼ばれる、ubalanced、AVL、RBツリーをサポートする新しいパッケージがあります。見つけることができます こちら 。
Sorted Containers プロジェクトもチェックしてください。
これについてのPyConの講演は次のとおりです。 https://www.youtube.com/watch?v=7z2Ki44Vs4E
いいえ、しかし PythonのAVLツリーオブジェクト (非常に古い!)とSourceForgeの(閉じた)プロジェクトがあります- Pythonのavl-trees 。