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

C++ में N-ary ट्री प्रीऑर्डर ट्रैवर्सल


समस्या विवरण

मान लीजिए हमारे पास एक N-ary ट्री है, हमें इसके नोड्स का प्रीऑर्डर ट्रैवर्सल ज्ञात करना है।

उदाहरण

यदि इनपुट ट्री है:

C++ में N-ary ट्री प्रीऑर्डर ट्रैवर्सल

तो आउटपुट होगा: [1,3,5,6,2,4]

हल करने का दृष्टिकोण

इस समस्या को हल करने के लिए निम्नलिखित चरणों का पालन करें:

  • एक सरणी ans परिभाषित करें
  • preorder() नामक एक विधि परिभाषित करें, जो रूट लेती है
  • यदि रूट null है, तो खाली सूची लौटाएं
  • रूट के मान को ans के अंत में डालें
  • रूट के चिल्ड्रन सरणी में प्रत्येक चाइल्ड i के लिए:
    • preorder(i) कॉल करें
  • ans लौटाएं

C++ कार्यान्वयन

#include <bits/stdc++.h>
using namespace std;

void print_vector(vector<int> v) {
    cout << "[";
    for(int i = 0; i < v.size(); i++) {
        cout << v[i] << ", ";
    }
    cout << "]" << endl;
}

class Node {
public:
    int val;
    vector<Node*> children;
    Node() {}
    Node(int _val) { val = _val; }
    Node(int _val, vector<Node*> _children) {
        val = _val;
        children = _children;
    }
};

class Solution {
public:
    vector<int> ans;
    vector<int> preorder(Node* root) {
        if (!root)
            return {};
        ans.emplace_back(root->val);
        for (auto i : root->children)
            preorder(i);
        return ans;
    }
};

int main() {
    Solution ob;
    Node *node5 = new Node(5), *node6 = new Node(6);
    vector<Node*> child_of_3 = {node5, node6};
    Node* node3 = new Node(3, child_of_3);
    Node *node2 = new Node(2), *node4 = new Node(4);
    vector<Node*> child_of_1 = {node3, node2, node4};
    Node *node1 = new Node(1, child_of_1);
    print_vector(ob.preorder(node1));
    return 0;
}

इनपुट

Node *node5 = new Node(5), *node6 = new Node(6); vector<Node*> child_of_3 = {node5, node6}; Node* node3 = new Node(3, child_of_3); Node *node2 = new Node(2), *node4 = new Node(4); vector<Node*> child_of_1 = {node3, node2, node4}; Node *node1 = new Node(1, child_of_1);

आउटपुट

[1, 3, 5, 6, 2, 4, ]
  1. पायथन में बाइनरी ट्री का प्रीऑर्डर ट्रैवर्सल (Binary Tree Preorder Traversal) पायथन में बाइनरी ट्री का प्रीऑर्डर ट्रैवर्सल (Binary Tree Preorder Traversal)

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

  1. C++ प्रोग्राम: बाइनरी ट्री का प्रीऑर्डर नॉन-रिकर्सिव ट्रैवर्सल C++ प्रोग्राम: बाइनरी ट्री का प्रीऑर्डर नॉन-रिकर्सिव ट्रैवर्सल

    ट्री ट्रैवर्सल ग्राफ ट्रैवर्सल का एक रूप। ट्री के प्रत्येक नोड को ठीक एक बार चेक/प्रिंट करना शामिल है। प्रीऑर्डर ट्रैवर्सल क्रम: रूट → बाएं → दाएं। बाइनरी ट्री उदाहरण Preorder Traversal: 5 3 2 4 8 9 C++ प्रोग्राम उदाहरण (इटरेटिव/नॉन-रिकर्सिव) left); } } struct Node* insertNode(struct Node*

  1. C++ में दिए गए बाइनरी ट्री का प्रीऑर्डर रिकर्सिव ट्रैवर्सल करने का प्रोग्राम C++ में दिए गए बाइनरी ट्री का प्रीऑर्डर रिकर्सिव ट्रैवर्सल करने का प्रोग्राम

    ट्री ट्रैवर्सल ग्राफ ट्रैवर्सल का एक रूप है। इसमें ट्री के प्रत्येक नोड को ठीक एक बार चेक या प्रिंट करना शामिल है। बाइनरी सर्च ट्री का प्रीऑर्डर ट्रैवर्सल ट्री के नोड्स को (रूट, लेफ्ट, राइट) के क्रम में विजिट करता है। बाइनरी ट्री के प्रीऑर्डर ट्रैवर्सल का एक उदाहरण निम्नलिखित है। एक बाइनरी ट्री निम्