C++で二分探索木のすべての偶数ノードを印刷します
この問題では、二分探索木が与えられます。私たちのタスクは、二分探索木のすべての偶数のノードを印刷することです。
二分探索木 次の条件に従う二分木です-
-
左側のサブツリーには、常に親ノードよりも小さい値のノードが含まれています。
-
そうです、サブツリーには常に親ノードよりも大きな値を持つノードが含まれています。
-
すべてのノードは、上記の2つのルールに従う必要があります。
二分探索木の例-
問題を理解するために例を見てみましょう-
出力 − 2 4 6 8
この問題を解決するには、バイナリ検索ツリーのすべてのノードをトラバースして、現在のノードの値を確認する必要があります。それでもそうである場合はノードを印刷し、そうでない場合はそのままにします。
例
以下のコードは、ロジックの動作を示しています-
#include <iostream>
using namespace std;
struct Node {
int key;
struct Node *left, *right;
};
Node* newNode(int item){
Node* temp = new Node;
temp->key = item;
temp->left = temp->right = NULL;
return temp;
}
Node* insertNode(Node* node, int key){
if (node == NULL)
return newNode(key);
if (key < node->key)
node->left = insertNode(node->left, key);
else
node->right = insertNode(node->right, key);
return node;
}
void printEvenNode(Node* root){
if (root != NULL) {
printEvenNode(root->left);
if (root->key % 2 == 0)
cout<<root->key<<"\t";
printEvenNode(root->right);
}
}
int main(){
Node* root = NULL;
root = insertNode(root, 54);
root = insertNode(root, 43);
root = insertNode(root, 12);
root = insertNode(root, 30);
root = insertNode(root, 89);
root = insertNode(root, 67);
root = insertNode(root, 80);
cout<<"All even nodes of the tree are :\n";
printEvenNode(root);
return 0;
} 出力
12 30 54 80
-
C++での二分木から二分探索木への変換
二分木 は、ツリーの各ノードが最大2つの子ノードを持つことができる特殊なタイプのツリーです。これらの子ノードは、右の子および左の子と呼ばれます。 単純な二分木は-です 二分探索木(BST) は、次のルールに従う特殊なタイプのツリーです- 左の子ノードの値は常に親よりも小さくなります注 右側の子ノードは、親ノードよりも大きな値を持っています。 すべてのノードが個別に二分探索木を形成します。 二分探索木(BST)の例 − バイナリ検索ツリーは、検索、最小値と最大値の検索などの操作の複雑さを軽減するために作成されます。 ここでは、二分木が与えられており、
-
C++プログラミングのバイナリツリー内のすべてのノードの印刷レベル。
二分木が与えられた場合、タスクは、1からnまでのノードに格納されているすべてのキーに関連付けられたレベルを出力することです 上記のツリーでは、ノードは- 10 at level 1 3 and 211 at level 2 140, 162, 100 and 146 at level 3 キーが与えられると、プログラムはその特定のキーのレベルを出力する必要があります。 例 Input: 10 3 211 140 162 100 146 Output: level of 10 is 1 Level of 3 is 2 &