skillup

技術ブログ

Database

データ構造の基礎知識 後編 木構造

投稿日:2016年7月27日 更新日:

データベースの学習をしていたときの復習です。

データ構造の基礎知識 前編 メモリとポインタ、配列と連結リスト

データ構造の基礎知識 中編 ハッシュ

今回はもう少し複雑な「木構造」について考えてみます。

木構造とは?

下記のような特徴があります。

  • 要素同士に親子関係がある
  • 親は複数の子を持てる
  • 子から親へ循環して親子関係になることはない

2分木構造

  • 親は0~2個の子供を持つ
  • 大小関係は左の数<親<右の数となる

下記リンクが一番イメージしやすい。

メリット

  • キーが常にソート済み
  • 各要素へのアクセスがO(logn)
  • 要素を追加してもハッシュのようなrehashは不要
  • ハッシュと違い、無駄になるメモリがないためメモリ効率が良い

デメリット

  • 偏った木構造(枝が一本のみ)の場合,O(n)になる

そこでこのデメリットを補うために、B木という構造が使われます。

B木

  • 各ノード内では値はソート済みの状態で保存されている
  • 各値の左側から生えている枝からたどれる値はその値よりも小さい値
  • 各値の右側から生えている枝からたどれる値はその値よりも大きい値

 

-Database
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

JPAでのデータベースとの同期

このブログでも何回か書いてきたJPAですが、新規レコードをインサートさせた際IDを取得し、そのIDをもとに何らかのキーを作る、そういう処理があったので紹介させていただきます。 何回か書いてますが、JP …

no image

MySQL safe mode

MySQLに関してしっかりパスワードをチェックしていれば問題ありませんが、中にはrootパスワードをわすれた!なんてこともあるでしょう。 そんなときはsafe modeで実行することでrootのパスワ …

no image

MySQLでの日付関数

MySQLでSUMやCOUNTなんかはよく使うと思うのですが、日付の関数なんかもかなり使います。 今回は、日付の日数をとりたいときの関数を紹介。 例えばあるカラムにある日付が入力されており、現在との日 …

no image

HAVING句について

本日はHAVINGについて。 かろうじて用法はしっており、たまに使うこともありますが、あまりしっかり理解しているとはいえない状況ですので、掘り下げてみようと思います。 WHEREとは違い、抽出した結果 …

no image

SQL基礎 結合に関して

SQL実践入門を読んで勉強しておりますが、本日は結合に関して。 Contents1 クロス結合2 内部結合3 外部結合4 結合のアルゴリズムとパフォーマンス4.1 NestedLoops4.2 Has …

アーカイブ