C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++プログラムでdeleteキーワードを使用してバイナリツリーを削除する


このチュートリアルでは、deleteキーワードを使用してバイナリツリーを削除する方法を学習します。

デストラクタメンバー関数を使用してバイナリを削除します。オブジェクトがスコープから外れるか、deleteを呼び出すことによってオブジェクトが破棄されると、デストラクタメンバー関数が自動的に呼び出されます。

デストラクタメンバー関数の名前は、チルダ(〜)のクラスです。 その前に。

問題を解決するための手順を見てみましょう。

  • Nodeというクラスを作成します。

  • ノードのデータを受け入れるコンストラクター関数を記述します。

  • デストラクタ関数を記述します。

    • 左側のノードを削除します。

    • 右側のノードを削除します。

    • 現在のノードデータを印刷します。

  • ダミーデータで二分木を初期化します。

  • ルートの削除を使用してバイナリトレスを削除します ステートメント。

#include <bits/stdc++.h>
using namespace std;
class Node {
   public:
   int data;
   Node* left;
   Node* right;
   // constructor
   Node(int data) {
      this->data = data;
      this->left = NULL;
      this->right = NULL;
   }
   // destructor
   ~Node() {
      // deleting the left and right pointers
      delete left;
      delete right;
      // printing node data
      cout << "Deleted node with data " << this->data << endl;
   }
};
int main() {
   Node* root = new Node(1);
   root->left = new Node(2);
   root->right = new Node(3);
   root->left->left = new Node(4);
   root->left->right = new Node(5);
   root->right->left = new Node(6);
   root->right->right = new Node(7);
   // deleting the entire tree using destructure function
   delete root;
   return 0;
}

出力

上記のプログラムを実行すると、次の結果が得られます。

Deleted node with data 4
Deleted node with data 5
Deleted node with data 2
Deleted node with data 6
Deleted node with data 7
Deleted node with data 3
Deleted node with data 1

結論

チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。


  1. Pythonを使用して二分木のルートを変更するプログラム

    二分木と二分木のリーフに位置するノードが与えられたと仮定します。リーフノードを二分木のルートノードにする必要があります。次のようにできます- ノードに左の子がある場合、そのノードは右の子になります。 ノードの親はその左の子になります。このプロセスでは、そのノードへの親ノードのリンクがnullになるため、子は1つだけになります。 ツリーのノード構造は次のようになります- TreeNode:    data: <integer>    left: <pointer of TreeNode>    

  2. Pythonを使用してバイナリツリーの右側のノードを見つけるプログラム

    バイナリツリーが提供されているとします。また、ノード(「u」という名前)へのポインターが与えられ、提供されたノードのすぐ右にあるノードを見つける必要があります。特定のノードの右側にあるノードは同じレベルにとどまる必要があり、特定のノードはリーフノードまたは内部ノードのいずれかになります。 したがって、入力が次のような場合 u =6の場合、出力は8になります。 ノード6の右側にあるノードはノード8であるため、値8が返されます。 これを解決するには、次の手順に従います- ルートが空の場合、 nullを返す dq:=新しい両端キュー dqの最後にルートを挿入