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 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  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] हैं, तो आउटपुट होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - ans := pre[0] मान लेकर एक ट्री नोड बनाएं, stack := खा

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

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

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

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