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

พิมพ์โหนดแบบเต็มทั้งหมดใน Binary Tree ใน C++


ในปัญหานี้ เราได้รับไบนารีทรี งานของเราคือพิมพ์โหนดทั้งหมดของทรีที่เป็นโหนดเต็ม

ต้นไม้ไบนารี เป็นต้นไม้ที่โหนดสามารถมีโหนดย่อยได้สูงสุด 2 โหนด โหนดหรือจุดยอดต้องไม่มีโหนด โหนดย่อยหนึ่งโหนดหรือโหนดย่อยสองโหนด

ตัวอย่าง

พิมพ์โหนดแบบเต็มทั้งหมดใน Binary Tree ใน C++

โหนดเต็ม เป็นโหนดที่มีทั้งลูกซ้ายและขวา กล่าวอีกนัยหนึ่ง โหนดที่มีชายด์ด้านซ้ายและขวาเป็นโหนดแบบเต็ม ในไบนารีทรีด้านบน 4 และ 9 เป็นโหนดเต็ม

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน −

พิมพ์โหนดแบบเต็มทั้งหมดใน Binary Tree ใน C++

ผลผลิต − 4 9

วิธีที่ง่ายและสะดวกในการแก้ปัญหานี้คือการสำรวจต้นไม้โดยใช้อัลกอริธึมการข้ามผ่านใดๆ ตรวจสอบว่าโหนดปัจจุบันมีลูกหรือโหนดซ้ายและขวา ถ้าใช่ ให้พิมพ์ค่าของโหนดเป็นอย่างอื่น ปล่อยไว้

ตัวอย่าง

โปรแกรมเพื่อแสดงโซลูชันของเรา

#include <iostream>
using namespace std;
struct Node{
   int data;
   struct Node *left, *right;
};
Node *insertNode(int data){
   Node *temp = new Node;
   temp->data = data;
   temp->left = temp->right = NULL;
   return temp;
}
void printFullNode(Node *root){
   if (root != NULL){
      printFullNode(root->left);
      if (root->left != NULL && root->right != NULL)
         cout<<root->data<<"\t";
      printFullNode(root->right);
   }
}
int main(){
   Node* root = insertNode(100);
   root->left = insertNode(56);
   root->right = insertNode(12);
   root->left->left = insertNode(89);
   root->right->left = insertNode(32);
   root->right->right = insertNode(45);
   cout<<"All full nodes of the tree are :\n";
   printFullNode(root);
   return 0;
}

ผลลัพธ์

All full nodes of the tree are −
100 12