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
結論
チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。
-
Pythonを使用して二分木のルートを変更するプログラム
二分木と二分木のリーフに位置するノードが与えられたと仮定します。リーフノードを二分木のルートノードにする必要があります。次のようにできます- ノードに左の子がある場合、そのノードは右の子になります。 ノードの親はその左の子になります。このプロセスでは、そのノードへの親ノードのリンクがnullになるため、子は1つだけになります。 ツリーのノード構造は次のようになります- TreeNode: data: <integer> left: <pointer of TreeNode>
-
Pythonを使用してバイナリツリーの右側のノードを見つけるプログラム
バイナリツリーが提供されているとします。また、ノード(「u」という名前)へのポインターが与えられ、提供されたノードのすぐ右にあるノードを見つける必要があります。特定のノードの右側にあるノードは同じレベルにとどまる必要があり、特定のノードはリーフノードまたは内部ノードのいずれかになります。 したがって、入力が次のような場合 u =6の場合、出力は8になります。 ノード6の右側にあるノードはノード8であるため、値8が返されます。 これを解決するには、次の手順に従います- ルートが空の場合、 nullを返す dq:=新しい両端キュー dqの最後にルートを挿入