B木
実装例を以下に示す。ここでは簡単のため、ノードの中を探索するのに線形探索を使っているが、ノードに含まれるキーの数が多い場合には二分探索を使うことで高速化できる可能性がある。
根を対象ノードとして検索を開始する
対象ノードが存在しない場合は検索値が木に登録されていないものとして終了
i = 1
キーi が存在しないか、検索値 < キーi の場合、枝i が指すノードを対象として2へ
検索値 = キーi の場合、検索成功として終了
i = i + 1 として4へ
検索の処理を行うことで、挿入しようとする値が木のどこに位置するべきかがわかる。まだ登録されていない値を検索した場合、処理は必ず葉ノードまで達する。すなわち、挿入処理は常に葉ノードを対象として開始される。ノードにまだ新たなキーを登録する余地がある場合、キーを追加して挿入処理は終了する。
問題は、対象となるノードが既に許容できる最大数のキーを持っている場合である。この場合、ノードの分割処理を行う。分割が必要なノードからキーをひとつ選択し(通常、大小順で中央の値を選択する)、このキーより小さいキーだけを含むノードと、より大きいキーだけを含むノードに分割する。分割の基準となったキーは、親のノードに移動する。
ここで、親ノードに対してキーを追加している。親ノードでキーの最大数を越えた場合は、根に向かって順に分割処理を適用していく。根まで到達して根が分割された場合は、木の高さが1段増加することになる。分割直後の新しい根は、キーを1個と枝を2個だけ持っている。