Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

सी भाषा में ऊंचाई पाए बिना सही बाइनरी ट्री के मध्य स्तर को प्रिंट करें

प्रोग्राम को बाइनरी ट्री के मध्य स्तर को प्रिंट करना चाहिए उदा। यदि बाइनरी ट्री में 4 स्तर हैं, तो प्रोग्राम को स्तर 2 नोड्स को प्रिंट करना होगा, लेकिन यहां मांग ऊंचाई का पता लगाए बिना स्तर की गणना करने की है।

परफेक्ट बाइनरी ट्री एक ऐसा पेड़ है जिसमें आंतरिक नोड्स में दो बच्चे होने चाहिए और सभी लीव नोड्स एक ही स्तर या गहराई पर होने चाहिए।

सी भाषा में ऊंचाई पाए बिना सही बाइनरी ट्री के मध्य स्तर को प्रिंट करें

यहां,

  • आंतरिक नोड 21 और 32 दोनों में बच्चे हैं

  • लीफ नोड्स 41, 59, 33 और 70 सभी एक ही स्तर पर स्थित हैं।

चूंकि यह दोनों गुणों को संतुष्ट करता है, इसलिए यह एक आदर्श बाइनरी ट्री है।

उदाहरण

Input : 12 21 32 41 59 33 70
Output : 21 32

यहां उपयोग किया जाने वाला दृष्टिकोण किसी नोड के बाएँ और दाएँ पॉइंटर की जाँच करके लिंक की गई सूची के मध्य तत्वों को खोजने जैसा है, यानी किसी फ़ंक्शन को रिकर्सिव कॉल करके NULL या NOT NULL।

नीचे दिया गया कोड दिए गए एल्गोरिथम के c कार्यान्वयन को दर्शाता है।

एल्गोरिदम

START
   Step 1 -> create node variable of type structure
      Declare int key
      Declare pointer of type node using *left, *right
   Step 2 -> create function for inserting node with parameter as value
      Declare temp variable of node using malloc
      Set temp->data = value
      Set temp->left = temp->right = NULL
      return temp
   step 3 - > Declare Function void middle(struct Node* a, struct Node* b)
      IF a = NULL||b = NULL
         Return
      IF ((b->left == NULL) && (b->right == NULL))
         Print a->key
         Return
      End
      Call middle(a->left, b->left->left)
      Call middle(a->right, b->left->left)
   Step 4 -> Declare Function void mid_level(struct Node* node)
      Call middle(node, node)
   Step 5 -> In main()
      Call New passing value user want to insert as struct Node* n1 = New(13);
      Call mid_level(n1)
STOP

उदाहरण

#include <stdio.h>
#include<stdlib.h>
struct Node {
   int key;
   struct Node* left, *right;
};
struct Node* New(int value) {
   struct Node* temp = (struct Node*)malloc(sizeof(struct Node));
   temp->key = value;
   temp->left = temp->right = NULL;
   return (temp);
}
void middle(struct Node* a, struct Node* b) {
   if (a == NULL || b == NULL)
      return;
   if ((b->left == NULL) && (b->right == NULL)) {
      printf("%d ",a->key);
      return;
   }
   middle(a->left, b->left->left);
   middle(a->right, b->left->left);
}
void mid_level(struct Node* node) {
   middle(node, node);
}
int main() {
   printf("middle level nodes are : ");
   struct Node* n1 = New(13);
   struct Node* n2 = New(21);
   struct Node* n3 = New(44);
   struct Node* n4 = New(98);
   struct Node* n5 = New(57);
   struct Node* n6 = New(61);
   struct Node* n7 = New(70);
   n2->left = n4;
   n2->right = n5;
   n3->left = n6;
   n3->right = n7;
   n1->left = n2;
   n1->right = n3;
   mid_level(n1);
}

आउटपुट

यदि हम उपरोक्त प्रोग्राम चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा।

middle level nodes are : 21 44

  1. C++ में बाइनरी ट्री के सभी आंतरिक नोड्स को प्रिंट करें

    इस समस्या में, हमें एक बाइनरी ट्री दिया जाता है और हमें बाइनरी ट्री के सभी आंतरिक नोड्स को प्रिंट करना होता है। बाइनरी ट्री एक पेड़ है जिसमें एक नोड में अधिकतम 2 चाइल्ड नोड हो सकते हैं। नोड या वर्टेक्स में कोई नोड नहीं हो सकता है, एक बच्चा या दो चाइल्ड नोड हो सकते हैं। उदाहरण - आंतरिक नोड एक न

  1. C++ में K के पत्तों वाले बाइनरी ट्री में सभी नोड्स प्रिंट करें

    इस समस्या में, हमें एक बाइनरी ट्री और एक पूर्णांक K दिया जाता है और हमें बाइनरी ट्री के उन सभी नोड्स को प्रिंट करना होता है जिनके चाइल्ड सबट्री में K पत्ते होते हैं। बाइनरी ट्री एक विशेष पेड़ है जिसके प्रत्येक नोड में अधिकतम दो नोड (एक/दो/कोई नहीं) होते हैं। लीफ नोड बाइनरी ट्री का नोड ट्री के अंत

  1. C++ प्रोग्रामिंग में एक बाइनरी ट्री में सभी नोड्स के प्रिंट स्तर।

    बाइनरी ट्री को देखते हुए, कार्य 1 से n तक के नोड में संग्रहीत प्रत्येक कुंजी से जुड़े स्तर को प्रिंट करना है उपरोक्त पेड़ में, नोड्स हैं - 10 लेवल 13 पर और 211 लेवल 2140 पर, 162, 100 और 146 लेवल 3 पर कुंजी को देखते हुए प्रोग्राम को उस विशेष कुंजी के स्तर को प्रिंट करना होगा। उदाहरण एल्गोरिदम न