Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ प्रोग्रामिंग में एक बाइनरी ट्री में सभी नोड्स के प्रिंट स्तर।

बाइनरी ट्री को देखते हुए, कार्य 1 से n तक के नोड में संग्रहीत प्रत्येक कुंजी से जुड़े स्तर को प्रिंट करना है

C++ प्रोग्रामिंग में एक बाइनरी ट्री में सभी नोड्स के प्रिंट स्तर।

उपरोक्त पेड़ में, नोड्स हैं -

10 लेवल 13 पर और 211 लेवल 2140 पर, 162, 100 और 146 लेवल 3 पर

कुंजी को देखते हुए प्रोग्राम को उस विशेष कुंजी के स्तर को प्रिंट करना होगा।

उदाहरण

इनपुट:10 3 211 140 162 100 146 आउटपुट:10 का स्तर 1 है 3 का स्तर 2 है 211 का स्तर 2 है 140 का स्तर 3 है 162 का स्तर 3 है 100 का स्तर 3 है 146 का स्तर 3 है पूर्व> 

एल्गोरिदम

स्टार्टस्टेप 1 -> स्ट्रक्चर नोड स्ट्रक्चर नोड के रूप में एक नोड की संरचना बनाएं *बाएं, *दाएं इंट डेटा एंडस्टेप 2 -> नोड नोड बनाने के लिए फ़ंक्शन * न्यूनोड (इंट डेटा) नोड * अस्थायी =नया नोड अस्थायी-> डेटा =डेटा अस्थायी-> बाएं =अस्थायी-> दाएं =नल रिटर्न टेम्पस्टेप 3 -> नोड शून्य स्तर (नोड * रूट) के स्तर को खोजने के लिए फ़ंक्शन बनाएं यदि रूट =नल रिटर्न एंड एसटीएल कतार बनाएं <जोड़ी <स्ट्रक्चर नोड *, int>>que que.push({root, 1}) STL जोड़ी बनाएं par Loop जबकि !que.empty() par =que.front() que.pop() प्रिंट par.first->डेटा और पैरा.सेकंड IF par.first->left que.push({ par.first->left, par.second + 1 }) END IF par.first->right que.push({ par.first-> दाएं, पैरा.सेकंड + 1}) एंडस्टॉप खत्म करें

उदाहरण

#include नेमस्पेस एसटीडी का उपयोग करना;//एक नोडस्ट्रक्ट नोड की संरचना{ int डेटा; स्ट्रक्चर नोड *बाएं, *दाएं;};//यह एक ट्रीवॉइड लेवल (नोड* रूट) के स्तर को प्रिंट करेगा {अगर (रूट ==NULL) रिटर्न; कतार <जोड़ी<स्ट्रक्चर नोड*, इंट>>क्यू; que.push ({रूट, 1}); जोड़ी<स्ट्रक्चर नोड*, इंट> बराबर; जबकि (! que.empty ()) { बराबर =que.front (); क्यू.पॉप (); cout <<"स्तर" <data <<" is " <left) que.push({ par.first->left, par.second + 1 }); if (par.first->right) que.push({ par.first->right, par.second + 1 }); }}// नोड्स बनाने के लिए फ़ंक्शन और इसलिए ट्रीनोड उत्पन्न करें * न्यूनोड (इंट डेटा) {नोड * अस्थायी =नया नोड; अस्थायी-> डेटा =डेटा; अस्थायी-> बाएँ =अस्थायी-> दाएँ =NULL; वापसी अस्थायी;} इंट मुख्य () {नोड * रूट =न्यूल; // यह एक नोड रूट =न्यूनोड (34) बनाएगा; रूट-> लेफ्ट =न्यूनोड (12); रूट-> राइट =न्यूनोड (50); रूट-> लेफ्ट-> लेफ्ट =न्यूनोड (11); रूट-> लेफ्ट-> राइट =न्यूनोड (54); स्तर (रूट); वापसी 0;}

आउटपुट

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

34 का स्तर 112 का स्तर 2 है 50 का स्तर 2 है 11 का स्तर 3 है 54 का स्तर 3 है

  1. बाइनरी ट्री के नोड्स को प्रिंट करें क्योंकि वे C++ प्रोग्रामिंग में लीफ नोड बन जाते हैं।

    एक बाइनरी ट्री को देखते हुए, हमें इसके लीफ नोड्स को प्रिंट करना होगा और फिर हमें उन लीफ नोड्स को हटाना होगा और तब तक दोहराना होगा जब तक कि ट्री में कोई नोड न बचे। उदाहरण तो समस्या का परिणाम होना चाहिए - 6 7 9 13 14 3 4 2 1 दृष्टिकोण हमने एक तरीका अपनाया है जहां हम डीएफएस लागू कर रहे है

  1. C++ प्रोग्रामिंग में बाइनरी ट्री में किन्हीं दो नोड्स के बीच प्रिंट पथ।

    हमें अलग-अलग नोड्स के एक बाइनरी ट्री और बाइनरी ट्री के दो नोड्स दिए गए हैं, जिसका बाइनरी ट्री में पथ हम प्रिंट करना चाहते हैं। उदाहरण के लिए - हम नोड 140 से 211 के बीच के पाथ को प्रिंट करना चाहते हैं, इसलिए इसका आउटपुट इस तरह होना चाहिए - Output: 140->3->10->211 विचार दो नोड्स के लिए रू

  1. सी ++ प्रोग्रामिंग में एक पेड़ के विषम स्तरों पर नोड्स प्रिंट करें।

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