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の最後にルートを挿入