C++ 二分探索ツリー デストラクタ

Ammar Ali 2023年10月12日
C++ 二分探索ツリー デストラクタ

このチュートリアルでは、C++ で delete キーワードを使用して二分探索木のデストラクタを作成する方法について説明します。

C++ 二分探索ツリー デストラクタ

二分探索木 (BST) は、検索可能な並べ替えられたデータを格納するデータ構造です。 二分探索木は、データ センターやソフトウェアで使用されます。

二分探索木はノードで構成され、各ノードには 2つの子があります。 二分木が構築されると、最初の値はルート ノードを表し、次の値がルート ノードより大きい場合はその右側に配置されます。 それ以外の場合は、左側に配置されます。

次の値が来たら、最初にルート ノードと比較する必要があります。次に、他の子ノードがあればそれと比較します。

二分探索木の各ノードは、キーと値で構成されます。 二分探索木はすでにソートされているため、検索が容易です。

C++ で二分探索木を構築するには、値に int データ型を使用し、現在の変数をクラスのインスタンスに参照するために使用される this キーワードとともに、左右のノードに 2つのポインター変数を使用できます。 . 二分木全体を削除するデストラクタを作成するには、delete キーワードを使用して変数のメモリの割り当てを解除します。

二分探索木を削除するには、左右のノードのメモリの割り当てを解除する必要があります。 たとえば、ツリーを構築するメソッドとツリーを削除するメソッドの 2つのメソッドを含む、二分探索ツリーのパブリック クラスを作成してみましょう。

以下のコードを参照してください。

#include <iostream>
using namespace std;

class BTreeNode {
 public:
  int Treedata;
  BTreeNode* leftNode;
  BTreeNode* rightNode;

  BTreeNode(int Treedata) {
    this->Treedata = Treedata;
    this->leftNode = NULL;
    this->rightNode = NULL;
  }
  ~BTreeNode() {
    delete leftNode;
    delete rightNode;
    cout << "Deleting " << this->Treedata << endl;
  }
};

int main() {
  BTreeNode* root = new BTreeNode(1);
  BTreeNode* node1 = new BTreeNode(2);
  BTreeNode* node2 = new BTreeNode(3);

  root->leftNode = node1;
  root->rightNode = node2;

  delete root;

  return 0;
}

出力:

Deleting 2
Deleting 3
Deleting 1

上記のコードでは、ルートと 2つのノードを持つツリーを作成し、delete キーワードを使用して削除しました。 また、cout() 関数を使用して、削除されるノードの値を 1つずつ表示しました。

上記の出力では、node2 が左側のノードであるため、最初に削除されていることがわかります。また、二分探索木のデストラクタ内で最初に左側のノードを削除しました。

著者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

関連記事 - C++ Data Structure