二分探索木

二分探索木

中級

説明

二分木に数値を挿入し、検索します。

ソート済みのデータを表現したいとき、配列はあまり良いデータ構造とは言えません。

たとえば、[1, 3, 4, 5]という配列があって、そこに2を追加して[1, 3, 4, 5, 2]になったとしましょう。すると、配列全体をもう一度ソートしなければなりません! ここで、新しい項目[1, nil, 3, 4, 5]のための場所を空けておき、空けた場所にその項目を追加すればよいと気づけば、改善できます。しかし、それでも多くの要素を1つずつ後ろにずらす必要があります。

一方、二分探索木なら、ソート済みのデータをはるかに効率よく扱えます。

二分探索木は、つながり合った複数のノードでできています。各ノードは、1つのデータ(たとえば数値の3)と、leftという名前の変数、rightという名前の変数を持ちます。leftとrightの変数は、nilか、別のノードを指します。これらのノードにもさらに下に別のノードがつながっているので、leftとrightの変数は部分木を指していると言います。左の部分木にあるデータはすべて、現在のノードのデータ以下です。右の部分木にあるデータはすべて、現在のノードのデータより大きくなります。

たとえば、データ4を持つノードがあって、そこにデータ2を追加すると、木は次のようになります。

  4
 /
2

次に6を追加すると、次のようになります。

  4
 / \
2   6

さらに3を追加すると、次のようになります。

   4
 /   \
2     6
 \
  3

そして1、5、7を追加すると、次のようになります。

      4
    /   \
   /     \
  2       6
 / \     / \
1   3   5   7

出典

Josh Cheek
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Delphi Pascal Exercism

二分探索木を始める準備はできましたか?

Exercismに登録すれば、76個の演習、そして本物の人間によるメンタリングとともに、Delphi Pascalを学んでマスターできます。すべて無料です。