C++プログラムの例を含むダブルツリー
このチュートリアルでは、指定されたツリーを2倍にする方法を学習します。
問題を解決するための手順を見てみましょう。
-
ノードクラスを作成します。
-
ダミーデータでツリーを初期化します。
-
ツリーを2倍にする再帰関数を記述します。
-
ツリーを再帰的にトラバースします。
-
左側のノードを変数に格納します。
-
トラバースした後、新しいノードを作成してデータを追加します。
-
次に、左側のノードを、新しく作成されたノードに左側の子として追加します。
-
-
ツリーを印刷します。
例
コードを見てみましょう。
#include <bits/stdc++.h> using namespace std; class node { public: int data; node* left; node* right; }; node* newNode(int data) { node* Node = new node(); Node->data = data; Node->left = NULL; Node->right = NULL; return Node; } void doubleTree(node* Node) { node* oldLeft; if (Node == NULL) return; doubleTree(Node->left); doubleTree(Node->right); oldLeft = Node->left; Node->left = newNode(Node->data); Node->left->left = oldLeft; } void printTree(node* node) { if (node == NULL) { return; } printTree(node->left); cout << node->data << " "; printTree(node->right); } int main() { node *root = newNode(1); root->left = newNode(2); root->right = newNode(3); cout << "Original Tree" << endl; printTree(root); cout << endl; doubleTree(root); cout << "Double Tree" << endl; printTree(root); cout << endl; return 0; }
出力
上記のコードを実行すると、次の結果が得られます。
Original Tree 2 1 3 Double Tree 2 2 1 1 3 3
結論
チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。
-
C++を使用してツリーの奇数レベルでノードを印刷するプログラム
このチュートリアルでは、特定の二分木の奇数レベルに存在するノードを印刷するプログラムについて説明します。 このプログラムでは、ルートノードのレベルは1と見なされ、同時に代替レベルは次の奇数レベルになります。 たとえば、次の二分木が与えられているとしましょう この場合、この二分木の奇数レベルのノードは1、4、5、6になります。 例 #include <bits/stdc++.h> using namespace std; struct Node { int data; Node* left, *right; }; //p
-
AVLツリーを実装するためのC++プログラム
AVLツリーは自己平衡二分探索木であり、左右のサブツリーの高さの差がすべてのノードで複数になることはありません。 ツリーの回転は、AVLツリーの要素の順序を妨げることなく構造を変更する操作です。ツリー内で1つのノードを上に移動し、1つのノードを下に移動します。これは、ツリーの形状を変更したり、小さいサブツリーを下に移動したり、大きいサブツリーを上に移動したりして高さを低くしたりするために使用され、多くのツリー操作のパフォーマンスが向上します。回転の方向は、木のノードが移動する側に依存しますが、他の人は、どの子がルートの場所をとるかに依存すると言います。これは、AVLツリーを実装するためのC+