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

दिए गए इनऑर्डर और प्रीऑर्डर ट्रैवर्सल से पोस्टऑर्डर ट्रैवर्सल प्रिंट करें

एक ट्री प्रोग्राम के इनऑर्डर और प्रीऑर्डर के साथ दिए गए पोस्टरोडर ट्रैवर्सल को ढूंढना चाहिए और उसे प्रिंट करना चाहिए

Input:
Inorder traversal in[] = {4, 2, 5, 1, 3, 6}
Preorder traversal pre[] = {1, 2, 4, 5, 3, 6}
Output:
Postorder traversal post[] = {4, 5, 2, 6, 3, 1}

एल्गोरिदम

START
Step 1 -> declare function as find_value(int p, int in_order[], int n)
   Loop For i=0 and i<n and ++i
      IF in_order[i]==p
         Return i
      End IF
   End
Step 2 -> declare function as postorder(int pre_order[], int in_order[], int n)
   Declare int variable as root = find_value(pre_order[0], in_order, n)
   IF root!=0
      Call postorder(pre_order+1, in_order, root)
   End
   IF root !=n-1
      Call postorder(pre_order+root+1, in_order+root+1,n-root-1)
   End
   Print pre_order[0]
End
Step 3 -> goto main()
   Declare int pre_order[] = {1, 2, 4, 5, 3, 6}
   Declare int in_order[] = {4, 2, 5, 1, 3, 6}
   Declare int size = sizeof(pre_order)/sizeof(pre_order[0])
   Call postorder(pre_order, in_order, size)
STOP

उदाहरण

#include <stdio.h>
int find_value(int p, int in_order[], int n) {
   for (int i = 0; i < n; ++i) {
      if (in_order[i] == p) {
         return i;
      }
   }
   return -1;
}
int postorder(int pre_order[], int in_order[], int n) {
   int root = find_value(pre_order[0], in_order, n);
   if(root !=0 )
      postorder(pre_order+1, in_order, root);
   if (root != n-1)
      postorder(pre_order+root+1, in_order+root+1, n-root-1);
   printf("%d ", pre_order[0]);
}
int main(int argc, char const *argv[]) {
   int pre_order[] = {1, 2, 4, 5, 3, 6};
   int in_order[] = {4, 2, 5, 1, 3, 6};
   int size = sizeof(pre_order)/sizeof(pre_order[0]);
   postorder(pre_order, in_order, size);
   return 0;
}

आउटपुट

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

4 5 2 6 3 1

  1. पायथन में प्रीऑर्डर और पोस्टऑर्डर ट्रैवर्सल से बाइनरी ट्री का निर्माण करें

    मान लीजिए कि हमारे पास दो ट्रैवर्सल अनुक्रम हैं प्रीऑर्डर और पोस्टऑर्डर, हमें इन दो अनुक्रमों से बाइनरी ट्री उत्पन्न करना है। तो अगर अनुक्रम [1,2,4,5,3,6,7], [4,5,2,6,7,3,1] हैं, तो आउटपुट होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - उत्तर:=पूर्व [0] मान लेकर एक ट्री नोड बनाएं, स्टैक:=ख

  1. पायथन में इनऑर्डर और पोस्टऑर्डर ट्रैवर्सल से बाइनरी ट्री का निर्माण करें

    मान लीजिए कि हमारे पास बाइनरी ट्री का इनऑर्डर और पोस्टऑर्डर ट्रैवर्सल सीक्वेंस है। हमें इन अनुक्रमों से वृक्ष उत्पन्न करना है। तो अगर पोस्टऑर्डर और इनऑर्डर अनुक्रम [9,15,7,20,3] और [9,3,15,20,7] हैं, तो पेड़ होगा - आइए चरणों को देखें - मान लीजिए कि विधि को प्रीऑर्डर और इनऑर्डर सूचियों के साथ बिल

  1. पायथन में प्रीऑर्डर और इनऑर्डर ट्रैवर्सल से बाइनरी ट्री का निर्माण करें

    मान लीजिए कि हमारे पास एक बाइनरी ट्री का इनऑर्डर और प्रीऑर्डर ट्रैवर्सल सीक्वेंस है। हमें इन अनुक्रमों से वृक्ष उत्पन्न करना है। तो अगर प्रीऑर्डर और इनऑर्डर अनुक्रम [3,9,20,15,7] और [9,3,15,20,7] हैं, तो ट्री होगा - आइए चरणों को देखें - मान लीजिए कि विधि को प्रीऑर्डर और इनऑर्डर सूचियों के साथ बि