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+