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

C++ में बाइनरी ट्री के विकर्ण ट्रैवर्सल में kवां नोड


इस ट्यूटोरियल में, हम एक ऐसा प्रोग्राम लिखेंगे जो बाइनरी ट्री के विकर्ण ट्रैवर्सल में kवां नोड ढूंढता है।

आइए इस समस्या को हल करने के चरण देखते हैं।

  • कुछ नमूना डेटा के साथ बाइनरी ट्री इनिशियलाइज़ करें।
  • संख्या k इनिशियलाइज़ करें।
  • डेटा संरचना क्यू का उपयोग करके बाइनरी ट्री को विकर्ण रूप से ट्रैवर्स करें।
    • प्रत्येक नोड पर k का मान घटाएं।
    • जब k 0 हो जाए तो नोड वापस करें।
  • यदि ऐसा कोई नोड नहीं है तो -1 वापस करें।

उदाहरण

आइए कोड देखते हैं।

#include <bits/stdc++.h> using namespace std; struct Node {    int data;    Node *left, *right; }; Node* getNewNode(int data) {    Node* node = (Node*)malloc(sizeof(Node));    node->data = data;    node->left = node->right = NULL;    return node; } int findDiagonalKthElement(Node* root, int k) {    if (root == NULL || k == 0) {       return -1;    }    int result = -1;    queue<Node*> q;    q.push(root);    q.push(NULL);    while (!q.empty()) {       Node* temp = q.front();       q.pop();       if (temp == NULL) {          if (q.empty()) {             if (k == 0) {                return result;             }else {                break;             }          }          q.push(NULL);       }else {          while (temp) {             if (k == 0) {                return result;             }             k--;             result = temp->data;             if (temp->left) {                q.push(temp->left);             }             temp = temp->right;          }       }    }    return -1; } int main() {    Node* root = getNewNode(10);    root->left = getNewNode(5);    root->right = getNewNode(56);    root->left->left = getNewNode(3);    root->left->right = getNewNode(22);    root->right->right = getNewNode(34);    root->right->right->left = getNewNode(45);    root->left->right->left = getNewNode(67);    root->left->right->right = getNewNode(100);    int k = 9;    cout << findDiagonalKthElement(root, k) << endl;    return 0; }

आउटपुट

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

67

निष्कर्ष

यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उन्हें कमेंट सेक्शन में लिखें।


  1. C++ में बाइनरी ट्री कैमरे C++ में बाइनरी ट्री कैमरे

    मान लीजिए हमारे पास एक बाइनरी ट्री है; हम ट्री के नोड्स पर कैमरे लगाते हैं। अब प्रत्येक कैमरा एक नोड पर अपने माता-पिता, स्वयं और अपने बच्चों की निगरानी कर सकता है। हमें ट्री के सभी नोड्स की निगरानी के लिए आवश्यक कैमरों की न्यूनतम संख्या ज्ञात करनी है। यदि इनपुट है - तो आउटपुट 1 होगा, क्योंकि सभी क

  1. पायथन में बाइनरी ट्री का प्रीऑर्डर ट्रैवर्सल (Binary Tree Preorder Traversal) पायथन में बाइनरी ट्री का प्रीऑर्डर ट्रैवर्सल (Binary Tree Preorder Traversal)

    मान लीजिए हमारे पास एक बाइनरी ट्री है। हमें उस ट्री का प्रीऑर्डर ट्रैवर्सल लौटाना है। यदि ट्री इस तरह है: तो प्रीऑर्डर ट्रैवर्सल होगा: [3,9,20,15,7] इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे: res और st नामक दो खाली सूचियाँ बनाएं। node := root जब तक node या st खाली नहीं है: जब

  1. बाइनरी ट्री के वर्टिकल ऑर्डर ट्रैवर्सल में kवां नोड खोजें C++ में बाइनरी ट्री के वर्टिकल ऑर्डर ट्रैवर्सल में kवां नोड खोजें C++ में

    मान लीजिए हमारे पास एक बाइनरी ट्री और एक मान K है। कार्य वर्टिकल ऑर्डर ट्रैवर्सल में Kवें नोड को प्रिंट करना है। यदि ऐसा कोई नोड मौजूद नहीं है, तो -1 वापस करें। तो यदि ट्री नीचे जैसा है - वर्टिकल ऑर्डर ट्रैवर्सल इस तरह है - 4 2 1 5 6 3 8 7 9 तो यदि K = 3, तो परिणाम 1 होगा। दृष्टिकोण सरल है। हम वर्ट