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

C भाषा में परफेक्ट बाइनरी ट्री का मध्य लेवल प्रिंट करना (ऊंचाई ढूंढे बिना)


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

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

C भाषा में परफेक्ट बाइनरी ट्री का मध्य लेवल प्रिंट करना (ऊंचाई ढूंढे बिना)

यहां,

  • इंटीरियर नोड्स 21 और 32 दोनों के बच्चे हैं
  • लीफ नोड्स 41, 59, 33 और 70 सभी समान लेवल पर हैं।

चूंकि यह दोनों गुणों को पूरा करता है इसलिए यह एक परफेक्ट बाइनरी ट्री है।

उदाहरण

इनपुट: 12 21 32 41 59 33 70
आउटपुट: 21 32

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

एल्गोरिदम

शुरुआत
चरण 1 → नोड वेरिएबल को संरचना टाइप का बनाएं
   int key घोषित करें
   *left, *right का उपयोग करके नोड टाइप का पॉइंटर घोषित करें
चरण 2 → पैरामीटर के रूप में value के साथ नोड डालने का फंक्शन बनाएं
   malloc का उपयोग करके temp वेरिएबल नोड का बनाएं
   temp->data = value सेट करें
   temp->left = temp->right = NULL सेट करें
   temp रिटर्न करें
चरण 3 → void middle(struct Node* a, struct Node* b) फंक्शन घोषित करें
   यदि a = NULL || b = NULL तो रिटर्न
   यदि ((b->left == NULL) && (b->right == NULL)) तो
      a->key प्रिंट करें
      रिटर्न
   middle(a->left, b->left->left) कॉल करें
   middle(a->right, b->left->left) कॉल करें
चरण 4 → void mid_level(struct Node* node) फंक्शन घोषित करें
   middle(node, node) कॉल करें
चरण 5 → main() में
   struct Node* n1 = New(13) के रूप में मान पास करें
   mid_level(n1) कॉल करें
समाप्त

उदाहरण

#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++ में बाइनरी ट्री के सभी इंटरनल नोड्स प्रिंट करना C++ में बाइनरी ट्री के सभी इंटरनल नोड्स प्रिंट करना

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

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

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

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

    दिए गए बाइनरी ट्री में, कार्य 1 से n तक शुरू होने वाले प्रत्येक कुंजी से जुड़े लेवल को प्रिंट करना है जो एक नोड में संग्रहीत है। उपरोक्त ट्री में नोड्स हैं - 10 at level 1 3 and 211 at level 2 140, 162, 100 and 146 at level 3 दिए गए कुंजी के लिए प्रोग्राम को उस विशेष कुंजी का लेवल प्रिंट करना होगा।