日記(4/11)

Google Code Jam Round1Aがあって,遅れずに起床できたので出た. ところが頭が回っていなかったのとそんなにやる気が出なかったため5点しか取れなかった. 5点て...

昨日実装したHeapdeleteを実装した. Heapにおいてdeleteできるのは先頭の要素だけなので,とりあえず末尾の要素を先頭に持ってくる. あとはその要素が子よりも小さければ入れ替えていくことを続けていくと,ヒープ条件を保ったまま先頭要素を削除することができる.

続いて二分木を実装した. insertsearchは簡単に実装できたが,deleteの実装が終わらなかった. 夜にやる.

というわけで二分木のdeleteを実装した. ごちゃごちゃさせたくないという理由で再帰を使って書いたが,かえってややこしくなってしまった.

二分木はソート済みのデータを順にinsertすると高さがnの木になってしまうのでよくない. これを木を回転させることで解決したのがAVL木だ. まだ動作原理を理解していないので明日勉強しようと思う.