二分ヒープ
古典的な二分木データ構造を使って、二分ヒープ木を構築することは完全に可能である。ただ、要素を追加する時に、次に追加する要素をぶら下げるべき要素を探すのに手間がかかる、という問題がある。素直に実装した二分木では、根元に向かうリンクが存在しないためである。これは「スレッド木」と呼ばれているデータ構造により困難を緩和できる。
スレッド木とは、末端の要素において、子要素への参照として null 等を格納するかわりに、通りがけ順(二分木#行きがけ順、通りがけ順、帰りがけ順探索を参照)における先行要素と後続要素への参照を格納し、探索を容易にした二分木データ構造である。
しかし、より普及しているやり方は、配列に写す方法である。以下のように、ほとんど完全な二分木の要素に番号を付けてみる。まず、根元の要素に 1 という番号を付ける。以下幅優先で順番に番号を振ってゆく(図を参照)。
すると、番号に次のような規則があることがわかる。ある要素に振られた番号を n とすると、
左の子は 2n
右の子は 2n + 1