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

พิมพ์โหนดที่ระดับคี่ของทรีในการเขียนโปรแกรม C++


จากไบนารีทรี โปรแกรมต้องพิมพ์โหนดที่ระดับคี่ของทรี และระดับของไบนารีทรีเริ่มจาก 1 ถึง n

เนื่องจากไม่มีการกล่าวถึงวิธีการใดวิธีหนึ่งที่สามารถนำมาใช้ได้ นั่นคือ การเรียกซ้ำหรือการวนซ้ำ

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

พิมพ์โหนดที่ระดับคี่ของทรีในการเขียนโปรแกรม C++

ในไบนารีทรีด้านบน -

Nodes at level 1: 10
Nodes at level 2: 3 and 211
Nodes at level 3: 140, 162, 100 and 146

ดังนั้น โหนดที่ระดับ 1 และระดับ 3 จะถูกพิมพ์ออกมา ซึ่งหมายความว่าผลลัพธ์จะเป็น 10, 140, 162, 100 และ 146

อัลกอริทึม

START
Step 1 -> create a structure of a node as
   struct Node
      struct node *left, *right
      int data
   End
Step 2 -> function to create a node
   node* newnode(int data)
   node->data = data
   node->left = node->right = NULL;
   return (node)
step 3 -> create function for finding the odd nodes
   void odd(Node *root, bool ifodd = true)
   IF root = NULL
      Return
   End
   if (ifodd)
      print root->data
   End
   odd(root->left, !ifodd)
   odd(root->right, !ifodd)
step 4 -> In main()
   Create tree using Node* root = newnode(45)
   root->left = newnode(23)
   Call odd(root)
Stop

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
struct Node{
   int data;
   Node* left, *right;
};
void odd(Node *root, bool ifodd = true){
   if (root == NULL)
      return;
   if (ifodd)
      cout << root->data << " " ;
   odd(root->left, !ifodd);
   odd(root->right, !ifodd);
}
// function to create a new node
Node* newnode(int data){
   Node* node = new Node;
   node->data = data;
   node->left = node->right = NULL;
   return (node);
}
int main(){
   Node* root = newnode(45);
   root->left = newnode(23);
   root->right = newnode(13);
   root->left->left = newnode(24);
   root->left->right = newnode(85);
   cout<<"\nodd nodes are ";
   odd(root);
   return 0;
}

ผลลัพธ์

หากเรารันโปรแกรมข้างต้น มันจะสร้างผลลัพธ์ดังต่อไปนี้

odd nodes are 45 24 85