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

सी भाषा में एक बाइनरी ट्री का बायां दृश्य प्रिंट करें

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

प्रत्येक नोड में अधिकतम 2 बच्चे हो सकते हैं, इसलिए यहां प्रोग्राम को नोड से जुड़े केवल बाएं पॉइंटर को पार करना चाहिए

यदि लेफ्ट पॉइंटर शून्य नहीं है, तो इसका मतलब है कि इसके साथ कुछ डेटा या पॉइंटर जुड़ा होगा यदि नहीं तो यह लेफ्ट चाइल्ड होगा जिसे प्रिंट किया जाएगा और आउटपुट के रूप में प्रदर्शित किया जाएगा।

उदाहरण

Input : 1 0 3 2 4
Output : 1 0 2

सी भाषा में एक बाइनरी ट्री का बायां दृश्य प्रिंट करें

यहाँ, नारंगी नोड बाइनरी ट्री के बाएँ दृश्य का प्रतिनिधित्व करते हैं।

दिए गए आंकड़े में डेटा 1 के साथ नोड एक रूट नोड है, इसलिए इसे बाएं बच्चे के पास जाने से प्रिंट किया जाएगा, यह 0 प्रिंट करेगा और इससे 3 गोटो होगा और इसके बाएं बच्चे को प्रिंट करेगा जो कि 2 है।

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

नीचे दिया गया कोड दिए गए एल्गोरिथम के 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 new_data
      Declare temp variable of node using malloc
      Set temp->data = new_data
      Set temp->left = temp->right = NULL
      return temp
   Step 3 -> declare function void left_view(struct node* root, int level, int* highest_level)
      IF root = NULL
         Exit
      End
      IF *highest_level < level
         Print root->data
         Set *highest_level = level
      End
      Recursively call left_view(root->left, level + 1, highest_level)
      Recursively call left_view(root->right, level + 1, highest_level)
   Step 4 -> Declare Function void left(struct node* root)
      Set int highest_level = 0
      Call left_view(root, 1, &highest_level)
   Step 5-> In main()
      Call New passing value user want to insert as struct node* root = New(1)
      Call left(root)
STOP

उदाहरण

#include <stdio.h>
#include <stdlib.h>
//create a structure of a node
struct node {
   int data;
   struct node *left, *right; //this pointer will point to the nodes attached with a node
};
struct node* New(int new_data) {
   struct node* temp = (struct node*)malloc(sizeof(struct node));
   //allocating memory to a pointer    dynamically
   temp->data = new_data;
   temp->left = temp->right = NULL;
   return temp;
}
void left_view(struct node* root, int level, int* highest_level) {
   if (root == NULL) //if there is no node that means no data
   return;
   // this function will retrun the root node if there is only root node in a tree
   if (*highest_level < level) {
      printf("%d\t", root->data);
      *highest_level = level;
   }
   // Recursive function
   left_view(root->left, level + 1, highest_level);
   left_view(root->right, level + 1, highest_level);
}
void left(struct node* root) {
   int highest_level = 0;
   left_view(root, 1, &highest_level);
}
int main() {
   printf("left view of a binary tree is : ");
   struct node* root = New(1);
   root->left = New(0);
   root->right = New(3);
   root->right->left = New(2);
   root->right->right = New(4);
   left(root);
   return 0;
}

आउटपुट

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

left view of a binary tree is : 1 0 2

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

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

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

    इस समस्या में, हमें एक बाइनरी ट्री दिया जाता है और हमें सभी नोड्स को उनके मूल्यों के क्रमबद्ध क्रम में एक स्तर पर प्रिंट करना होता है। आइए अवधारणा को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं, इनपुट - आउटपुट - 20 6 15 2 17 32 78 इस समस्या को हल करने के लिए, हमें पेड़ के प्रत्येक स्तर के क्र

  1. पायथन में एक बाइनरी ट्री का सबसे कम सामान्य पूर्वज

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है। हमें दो दिए गए नोड्स के सबसे कम सामान्य पूर्वज नोड्स को खोजना होगा। दो नोड्स p और q का LCA वास्तव में पेड़ में सबसे कम नोड के रूप में होता है जिसमें p और q दोनों डीसेंटेंट होते हैं। तो अगर बाइनरी ट्री [3,5,1,6,2,0,8,null,null,7,4] जैसा है। पेड़ जैसा होगा -