skillup

技術ブログ

Database

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

投稿日:

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

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

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

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

木構造とは?

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

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

2分木構造

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

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

http://tokyo-ct.net/usr/kosaka/for_students/jissen1/akiyojissen1/kougi13.html

メリット

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

デメリット

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

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

B木

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

参照リンク

http://www.moon.sannet.ne.jp/okahisa/b-tree/

-Database
-

執筆者:


comment

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

関連記事

no image

サブクエリ 応用編

本日も引き続きサブクエリです。 前回とちょっと近いですが、下記のような歯抜けのテーブル(sales2)があるとします。 year | sale ——+—&#8212 …

no image

正規化について&EXTRACT

Contents1 正規化とは?2 第一正規化3 SQLネタ EXTRACT 正規化とは? 正確な定義は難しいですが、8割ぐらいあっている定義としては「適切なテーブルに分割すること」です。※ただし正確 …

no image

MySQLのメモリ設定

実務で結構サーバーをヘビーに使われるお客さんがいて、SQLが遅くなったりとしています。 なんとか対策しないといけないので、いろいろと調査をいます。 それで今回はMySQLのメモリ問題など。 MySQL …

no image

データベース設計のアンチパターン 重すぎるOLTP+Date型不統一+データ量想定が甘い

Contents1 重すぎるOLTP1.1 デメリット1.2 対策2 DATE型の型の不統一2.1 デメリット2.2 対策3 データ量の想定が甘い3.1 デメリット3.2 対策 重すぎるOLTP ※O …

no image

JPAまとめ

JPAわけわかんねーと思い、触りはじめてから3か月ぐらいたちます。 いまだに細かい部分はよくわかっていないことは多いのですが、全体像というか何となくどういうものかはわかり始めてきたいのでまとめたいと思 …