ツリー構造

ツリー構造
ツリー構造とは

ツリー構造とは、データ構造の一種で、ある階層に属する一つのデータから、下位階層に位置する複数のデータが枝分かれした状態で配置されている構造のことである。

ツリー構造では、各階層は親子関係を持っており、親は複数の子を持ち、その子は自分を親として複数の子を持つことができる。子は複数の親を持つことがない。ツリー構造は樹木における枝葉に喩えた表現であるが、すべてのデータにとって上位に位置した(親を持たない)最上位の階層は、root(根)と呼ばれている。

ファイルシステムにおけるディレクトリなどは、ツリー構造によって管理されていると言うことができる。

なお、ツリー構造の中でも、枝分かれが必ず2つだけ存在しているものは、特にバイナリツリー(完全二分木)と呼ばれている。


SEOでは、構造のことを指します。

略歴/流れ

略歴/流れ

インターネット上の情報が増えるにつれ、情報を順序だてて分類し、ユーザーにとってもサイト運営側にとっても、情報を分かりやすくする必要が出てきました

そしてツリー構造(木構造)の概念が確立されると、ツリー構造は様々な仕組みに組み込まれることになりました。

種類・定義

定義

ツリー構造とは

ツリー構造とは、データ構造の一種で、複数のデータが木のように枝分かれした状態で配置された構造のことです。

ツリー構造を構成するそれぞれの要素をノード(または節)と言い、ノード同士の繋がりをエッジ(または枝)と言います。

ノードは複数の子ノードを持ち、子ノードも自身を親ノードとして複数の子ノードを持つことから、家系図を想像すると分かりやすいでしょう。

ノード

始まりとなる、親を持たないノードを根ノードと言い、親と子を持っているノードを枝ノード(または内部ノード、中間ノード、非終端ノード)、子を持たないノードを葉ノード(または外部ノード、終端ノード)などのように呼びます。

あるノードから見て葉ノード側にあるノードをまとめて子孫ノードと言い、反対に根ノード側にあるノードをまとめて先祖ノードと言います。

同じ親を持つノード同士は兄弟ノードと呼ばれます。親は複数の子を持ちますが、子が複数の親を持つことはありません

ツリー構造の種類

ツリー構造は子の数によって分類することができます。

二分木

二分木は、子の数が2つまでと決まっているツリー構造を指し、すべてのノードが2つの子を持っている二分木を完全二分木や二進木、バイナリツリーと呼びます。

多分木

多分木は、親が3つ以上の子を持てるツリー構造で、多進木とも呼びます。

n分木

n=3以上の自然数としたとき、n個の子を持つツリー構造をn分木、またはn進木と呼び、子の数に合わせて呼び方の種類が変わります。

関連する単語の紹介

関連する言葉

深さ

あるノードから根ノードまでのエッジ数を深さと言います。根ノードの深さは0で、そこから子ノードへ1階層下るごとに1ずつカウントしていきます。

高さ

高さは、あるノードから一番深い葉ノードまでのエッジ数のことです。根ノードの高さはそのツリー構造の高さとイコールになります。

同じ深さにあるノードの数を幅と言います。

部分木

あるノードからその子孫ノードを見ると、その部分だけでもツリー構造が形成されています。

これを部分木と言い、根ノードから始まる部分木はそのツリー構造全体ということになります。根ノードを含まない部分木は真部分木と呼びます。

平衡木

平衡木は葉の深さが等しくなるように構築された木(ツリー構造)のことで、バランス木とも呼ばれます。

森は、複数の木からなる木の集合体を指します。

ヒープ

ヒープは、「子ノードの値が親ノードの値よりも常に小さいか等しい(または常に大きいか等しい)」という特徴を持つツリー構造です。

ヒープは最大値、または最小値を求めることに適しています。

二分ヒープ

二分ヒープはバイナリーヒープともいい、二分木を使ったヒープを指します。単に「ヒープ」と言う場合、この二分ヒープのことを指す場合もあります。

二分探索木

二分探索木は、「左の子孫の値 ≤ 親の値 ≤ 右の子孫の値」という特徴を持つ二分木で、値の探索に適した性質を持つ探索木の中で最も基本的なツリー構造です。

深さ優先探索

深さ優先探索は、ツリー構造のノードを体系的に調査する走査アルゴリズムの一つで、あるノードから目的のノード、もしくは子のないノードまで深く伸びていく探索方法です。

末端の葉ノードまで行ったら、そこから一番近くの探索が終わっていないノードまで戻るということを繰り返します。

幅優先探索

幅優先探索もツリー構造の走査アルゴリズムで、根ノードから始まり、その子ノードをすべて探索したら、さらに次の深さの同じ幅にある子ノードを探索します。

一般的な活用方法、様々な目線から紹介

活用

サイトの構造が分かりやすくなる

ツリー構造を用いてウェブサイトのページを階層ごとに整理することで、ユーザーが今どこにいるのか分かりやすく表示することができます。

代表的なものがパンくずリストで、ウェブサイトでは必ずと言っていいほど採用されています。

「ホーム>製品案内>製品A」のような表示をページに記載することで、ユーザーはサイトの構造を把握しやすくなり、いまサイトのどこにいるのか・目的の情報がどこにあるのかが分かりやすくなります。

URLもツリー構造になっており、「http://www.●●●.co.jp/product/productA」のように「製品一覧>製品A」とURLからも、サイト内の位置が分かるようになっています。

情報を管理しやすくなる

構築されたウェブサイトの情報が無秩序に点在していると、情報を探したり、付け加えることが困難です。

ツリー構造を基に、様々な情報をモデル化するのに使われる非巡回グラフや、複数の文書を関連付けるシステムであるハンパーリンクを用いることで、情報を管理しやすくなります。

また、ツリー構造は子が増えていくという特性から、後から情報を付け加えることが容易にできます。

ツリー構造のメリット・注意点

メリット・注意点

ツリー構造のメリット

ツリー構造を用いて情報が分かりやすく分類されることで、ユーザーがサイトの内容を把握しやすくなったり、サイトのテーマの関連性が高くなることから、SEO効果が期待できます。

サイト運営側としても情報を管理しやすくなり、効率化を図ることができます。

ツリー構造の注意点

ツリー構造の階層を深くしすぎると、目的のデータへのアクセスが複雑になることや、データの処理に時間がかかることなどが挙げられます。

また、同じ情報を複数の箇所で使用した場合、その情報の分類が分かりにくくなるケースもあります。逆に階層が浅すぎると、データの関連性が分かりにくくなったり、薄くなったりします。

これはSEOの観点から見ると良くない影響が懸念されます。とはいえ、ツリー構造を適切に用いればこれらの問題を回避することができるので、ツリー構造は積極的に用いるべきでしょう。

関連キーワード

パンくずリスト