[python]お尻🌲イランとは?

4097 ワード

お尻って何?


hipは、ツリー構造における完全バイナリツリーに基づくデータ構造である.お尻は最高価格と最高価格を求める上で非常に優れている.この理由はお尻を知っていればわかります.
お尻になる条件は以下の通りです.
親ノードの値は、
  • 子ノードより大きくなければなりません.
  • 右側のサブノードの値は、
  • の左側のサブノードの値より大きくなければなりません.

  • 画像ソース
    お尻には、ルートノードが最小のお尻、ルートノードが最大のお尻の2種類があります.
    Pythonは、使いやすいようにライブラリとして提供しています.

    入庫する

    import heapq
    heapqライブラリはリストを最小hipに設定します.リストであるため、インデックス値アクセスとしても使用できます.hipなので、ツリー構造ナビゲーション方式も使用できます.

    お尻のインデックス


    hipのインデックスは、深さごとにインデックス値を与えます.

    画像ソース
    n個の要素を持つリストをhipに変換します.
  • 左サブノードのインデックス:2 n
  • 右サブノードのインデックス:2 n+1
  • ヒップとして既存のリストを使用


    heapify()関数を使用します.
    list1 = [1, 2, 3, 4]
    heapq.heapify(list1)

    お尻に値を追加


    heapとして宣言されたheapqに3という値を追加する場合は、次の手順に従います.
    heapq.heappush(heap, 3)
    heapq内の適切な場所を自動的に検索して追加します.

    お尻から値を削除

    heapq.heappop(heap)
    お尻から最小値を削除して返します.
    最小値を削除すると、残りのお尻の内部の最小値が位置に置き換えられます.

    一番大きいお尻は?


    お尻は最小のお尻と最大のお尻を使うことができ、heapqライブラリは最小のお尻を使うことができます.ではheapqは最大のhipとしてどのように使われているのでしょうか.
    これが↑へ¥¥¥¥¥¥¥¥¥
    お尻に使用する値は、(優先順位、値)の調音形式として、お尻を最大限に使用できます.
    list2 = [(1, 10), (2, 9), (3, 8), (4, 7)]
    heapq.heapify(list2)
    これにより、ルートノードの値を優先度に応じて最大hipに変更できます.😆