Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

พิมพ์ไบนารีทรีระดับตามลำดับการเรียงลำดับใน C++


ในปัญหานี้ เราได้รับไบนารีทรีและเราต้องพิมพ์โหนดทั้งหมดที่ระดับโดยเรียงลำดับค่าของโหนดเหล่านี้

มาดูตัวอย่างเพื่อทำความเข้าใจแนวคิดกันดีกว่า

ป้อนข้อมูล

พิมพ์ไบนารีทรีระดับตามลำดับการเรียงลำดับใน C++

ผลลัพธ์

20
6 15
2 17 32 78

เพื่อแก้ปัญหานี้ เราจำเป็นต้องพิมพ์การเรียงลำดับของแต่ละระดับของต้นไม้ สำหรับสิ่งนี้ เราจำเป็นต้องสร้างคิวและสองลำดับความสำคัญ ตัวคั่น NULL ใช้เพื่อแยกสองระดับ

ตัวอย่าง

โปรแกรมแสดงตรรกะ -

#include <iostream>
#include <queue>
#include <vector>
using namespace std;
struct Node {
   int data;
   struct Node *left, *right;
};
void printLevelElements(Node* root){
   if (root == NULL)
      return;
   queue<Node*> q;
   priority_queue<int, vector<int>, greater<int> > current_level;
   priority_queue<int, vector<int>, greater<int> > next_level;
   q.push(root);
   q.push(NULL);
   current_level.push(root->data);
   while (q.empty() == false) {
      int data = current_level.top();
      Node* node = q.front();
      if (node == NULL) {
         q.pop();
         if (q.empty())
            break;
         q.push(NULL);
         cout << "\n";
         current_level.swap(next_level);
         continue;
      }
      cout << data << " ";
      q.pop();
      current_level.pop();
      if (node->left != NULL) {
         q.push(node->left);
         next_level.push(node->left->data);
      }
      if (node->right != NULL) {
         q.push(node->right);
         next_level.push(node->right->data);
      }
   }
}
Node* insertNode(int data){
   Node* temp = new Node;
   temp->data = data;
   temp->left = temp->right = NULL;
   return temp;
}
int main(){
   Node* root = insertNode(12);
   root->left = insertNode(98);
   root->right = insertNode(34);
   root->left->left = insertNode(76);
   root->left->right = insertNode(5);
   root->right->left = insertNode(12);
   root->right->right = insertNode(45);
   cout << "Elements at each Level of binary tree are \n";
   printLevelElements(root);
   return 0;
}

ผลลัพธ์

Elements at each Level of binary tree are
12
34 98
5 12 45 76