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

सी भाषा में एक बाइनरी ट्री का राइट व्यू प्रिंट करें

कार्य किसी दिए गए बाइनरी ट्री के दाहिने नोड्स को प्रिंट करना है। सबसे पहले उपयोगकर्ता एक बाइनरी ट्री बनाने के लिए डेटा सम्मिलित करेगा और इस प्रकार बने ट्री के राइट व्यू को प्रिंट करेगा।

सी भाषा में एक बाइनरी ट्री का राइट व्यू प्रिंट करें

उपरोक्त आरेख 10, 42, 93, 14, 35, 96, 57 और 88 नोड्स के साथ बनाए गए बाइनरी ट्री को प्रदर्शित करता है, इन नोड्स में से जो एक पेड़ के दाईं ओर स्थित होता है उसे स्क्रीन पर चुना और प्रदर्शित किया जाता है। उदाहरण के लिए, 10, 93, 57 और 88 बाइनरी ट्री के सबसे दाहिने नोड हैं।

उदाहरण

Input : 10 42 93 14 35 96 57 88
Output : 10 93 57 88

प्रत्येक नोड से जुड़े दो पॉइंटर्स हैं यानी बाएँ और दाएँ। इस प्रश्न के अनुसार, प्रोग्राम को केवल दाएं नोड्स को पार करना चाहिए। तो, नोड के बाएं बच्चे के बारे में परेशान होने की कोई आवश्यकता नहीं है।

राइट व्यू उन सभी नोड्स को स्टोर करता है जो उनके स्तर के अंतिम नोड हैं। इसलिए, हम नोड्स को स्टोर करने और एक्सेस करने के लिए बस रिकर्सिव दृष्टिकोण का उपयोग कर सकते हैं ताकि बाएं सबट्री से पहले दाएं सबट्री को पार किया जा सके। जब भी प्रोग्राम उस नोड का पता लगाता है जिसका स्तर पिछले नोड की तुलना में पिछले नोड के स्तर से अधिक है, प्रदर्शित होता है क्योंकि यह अपने स्तर का अंतिम नोड होगा।

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

एल्गोरिदम

START
   Step 1 -> create node variable of type structure
      Declare int data
      Declare pointer of type node using *left, *right
   Step 2 -> create function for inserting node with parameter as item
      Declare temp variable of node using malloc
      Set temp->data = item
      Set temp->left = temp->right = NULL
      return temp
   step 3 -> Declare Function void right_view(struct node *root, int level, int *end_level)
      IF root = NULL
         Return
      IF *end_level < level
         Print root->data
         Set *end_level = level
         Call right_view(root->right, level+1, end_level)
         Call right_view(root->left, level+1, end_level)
   Step 4 -> Declare Function void right(struct node *root)
      Set int level = 0
      Call right_view(root, 1, &level)
   Step 5 -> In Main()
      Pass the values for the tree nodes using struct node *root = New(10)
      Call right(root)
STOP

उदाहरण

#include<stdio.h>
#include<stdlib.h>
struct node {
   int data;
   struct node *left, *right;
};
struct node *New(int item) {
   struct node *temp = (struct node *)malloc(sizeof(struct node));
   temp->data = item;
   temp->left = temp->right = NULL;
   return temp;
}
void right_view(struct node *root, int level, int *end_level) {
   if (root == NULL) return;
   if (*end_level < level) {
      printf("%d\t", root->data);
      *end_level = level;
   }
   right_view(root->right, level+1, end_level);
   right_view(root->left, level+1, end_level);
}
void right(struct node *root) {
   int level = 0;
   right_view(root, 1, &level);
}
int main() {
   printf("right view of a binary tree is : ");
   struct node *root = New(10);
   root->left = New(42);
   root->right = New(93);
   root->left->left = New(14);
   root->left->right = New(35);
   root->right->left = New(96);
   root->right->right = New(57);
   root->right->left->right = New(88);
   right(root);
   return 0;
}

आउटपुट

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

right view of a binary tree is : 10 93 57 88

  1. C++ में एक स्टैक का उपयोग करके बाएं से दाएं बाइनरी ट्री में लीफ नोड्स प्रिंट करें

    प्रोग्राम को बाइनरी ट्री के लीफ नोड्स को बाएं से दाएं प्रिंट करना चाहिए, लेकिन चुनौती में केवल एक स्टैक का उपयोग करना शामिल है पुश () फ़ंक्शन के माध्यम से एक बाइनरी ट्री के नोड्स डालें और पॉप () ऑपरेशन के माध्यम से लीफ नोड्स प्रदर्शित करें। लीफ नोड्स अंतिम नोड होते हैं जिनके बाएँ और दाएँ पॉइंटर NU

  1. पायथन का उपयोग करके बाइनरी ट्री में दाईं ओर नोड का पता लगाने का कार्यक्रम

    मान लीजिए, हमें एक बाइनरी ट्री प्रदान किया जाता है। हमें एक नोड (u नाम दिया गया) के लिए एक पॉइंटर भी दिया जाता है और हमें दिए गए नोड के ठीक दाईं ओर स्थित नोड को खोजना होता है। दिए गए नोड के दाईं ओर स्थित नोड समान स्तर पर रहना चाहिए और दिया गया नोड या तो लीफ नोड या आंतरिक नोड हो सकता है। तो, अगर इनप

  1. पायथन में एक बाइनरी ट्री में दूसरा सबसे गहरा नोड खोजने का कार्यक्रम

    मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें दूसरी सबसे गहरी पत्ती की गहराई का पता लगाना है। यदि कई गहरे पत्ते हैं, तो दूसरा सबसे गहरा पत्ता नोड अगला उच्चतम होगा। जैसा कि हम जानते हैं कि जड़ की गहराई 0 होती है। तो, अगर इनपुट पसंद है तो आउटपुट 1 होगा, क्योंकि दूसरा सबसे गहरा नोड 3 है। इसे हल करने