C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++を使用してバイナリツリーの2つの指定されたレベル番号の間のノードを印刷するプログラム


このチュートリアルでは、バイナリツリーの2つの指定されたレベル番号の間のノードを印刷するプログラムについて説明します。

ここでは、特定の二分木の低レベルと高レベルが与えられ、与えられたレベル間のすべての要素を印刷する必要があります。

これを解決するために、キューベースのレベルトラバーサルを使用できます。順序付けられたトラバーサルを移動している間、各レベルの最後にマーキングノードを設定できます。次に、各レベルに移動して、指定されたレベルの間にマーキングノードが存在する場合は、そのノードを印刷できます。

#include <iostream>
#include <queue>
using namespace std;
struct Node{
   int data;
   struct Node* left, *right;
};
//to print the nodes between the levels
void print_nodes(Node* root, int low, int high){
   queue <Node *> Q;
   //creating the marking node
   Node *marker = new Node;
   int level = 1;
   Q.push(root);
   Q.push(marker);
   while (Q.empty() == false){
      Node *n = Q.front();
      Q.pop();
      //checking for the end of level
      if (n == marker){
      cout << endl;
      level++;
      if (Q.empty() == true || level > high)
      break;
      Q.push(marker);
      continue;
   }
   if (level >= low)
      cout << n->data << " ";
      if (n->left != NULL) Q.push(n->left);
      if (n->right != NULL) Q.push(n->right);
   }
}
Node* create_node(int data){
   Node* temp = new Node;
   temp->data = data;
   temp->left = temp->right = NULL;
   return (temp);
}
int main(){
   struct Node *root= create_node(20);
   root->left= create_node(8);
   root->right= create_node(22);
   root->left->left= create_node(4);
   root->left->right= create_node(12);
   root->left->right->left= create_node(10);
   root->left->right->right= create_node(14);
   cout << "Elements between the given levels are :";
   print_nodes(root, 2, 3);
   return 0;
}

出力

Elements between the given levels are :
8 22
4 12

  1. C++プログラミングのバイナリツリー内の任意の2つのノード間のパスを出力します。

    個別のノードのバイナリツリーと、バイナリツリー内のパスを出力するバイナリツリーの2つのノードが与えられます。 例 −ノード140から211の間のパスを出力して、その出力が次のようになるようにします- Output: 140->3->10->211 アイデアは、ルートノードから2つのノードへのパスを見つけて、それらを2つの別々のベクトルまたは配列(path1とpath2など)に格納することです。 ここで、2つの異なるケースが発生します- 2つのノードがルートノードの異なるサブツリーにある場合 − 2つのノードが、1つが左に、もう1つが右のように異なるサブツリーにあ

  2. 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   &