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

C++ में बाइनरी ट्री के बाईं ओर के दृश्य को खोजने का कार्यक्रम

मान लीजिए हमारे पास एक बाइनरी ट्री है, अगर हम पेड़ को बाईं ओर से देखते हैं, तो हम उसके कुछ तत्व देख सकते हैं। हमें उन तत्वों को प्रदर्शित करना होगा। तो अगर पेड़ जैसा है -

C++ में बाइनरी ट्री के बाईं ओर के दृश्य को खोजने का कार्यक्रम

आउटपुट [1,2,5]

. होगा

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • एक सरणी रिट परिभाषित करें

  • फ़ंक्शन dfs() को परिभाषित करें, यह नोड लेगा, c इसे 1 से प्रारंभ करें,

  • यदि नोड शून्य है, तो -

    • वापसी

  • अगर c> lvl, तो -

    • एलवीएल:=सी

    • रिट में नोड का मान डालें

  • dfs (नोड के बाएं, c + 1)

  • dfs (नोड का दायां, c + 1)

  • मुख्य विधि से, निम्न कार्य करें -

  • एलवीएल:=-1

  • dfs(रूट, 0)

  • वापसी रिट


आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#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 TreeNode{
   public:
   int val;
   TreeNode *left, *right;
   TreeNode(int data){
      val = data;
      left = right = NULL;
   }
};
class Solution {
   public:
   vector <int> ret;
   int lvl;
   void dfs(TreeNode* node, int c = 1){
      if(!node)
         return;
      if(c > lvl){
         lvl = c;
         ret.push_back(node->val);
      }
      dfs(node->left, c + 1);
      dfs(node->right, c + 1);
   }
   vector<int> solve(TreeNode* root) {
      lvl = -1;
      dfs(root, 0);
      return ret;
   }
};
main(){
   TreeNode *root = new TreeNode(1);
   root->left = new TreeNode(2);
   root->right = new TreeNode(3);
   root->left->right = new TreeNode(5);
   root->right->right = new TreeNode(4);
   Solution ob;
   print_vector(ob.solve(root));
}

इनपुट

TreeNode *root = new TreeNode(1);
root->left = new TreeNode(2);
root->right = new TreeNode(3);
root->left->right = new TreeNode(5);
root->right->right = new TreeNode(4);

आउटपुट

[1,2,5]

  1. C++ में अधिकतम बाइनरी ट्री

    मान लीजिए कि हमारे पास एक पूर्णांक सरणी है। उस सरणी के सभी तत्व अद्वितीय हैं। इस सरणी पर अधिकतम वृक्ष निर्माण को निम्नानुसार परिभाषित किया गया है - जड़ सरणी में अधिकतम संख्या धारण करेगा। लेफ्ट सबट्री सबएरे के बायीं ओर से निर्मित अधिकतम ट्री है जिसे अधिकतम संख्या से विभाजित किया जाता है। दाय

  1. C++ में बाइनरी ट्री राइट साइड व्यू

    मान लीजिए हमारे पास एक बाइनरी ट्री है, अगर हम पेड़ को दाईं ओर से देखते हैं, तो हम उसके कुछ तत्व देख सकते हैं। हमें उन तत्वों को प्रदर्शित करना होगा। तो अगर पेड़ जैसा है - इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - हम dfs के लिए एक हेल्पिंग मेथड बनाएंगे। यह ट्री_नोड, उत्तर रखने के लिए एक सर

  1. सी ++ में बाइनरी ट्री में निकटतम पत्ता खोजें

    मान लीजिए, एक बाइनरी ट्री दिया गया है। इसमें विभिन्न स्तरों पर पत्ती की गांठें होती हैं। एक और पॉइंटर दिया गया है, जो एक नोड की ओर इशारा कर रहा है। हमें नुकीले नोड से निकटतम लीफ नोड की दूरी ज्ञात करनी होगी। विचार करें कि पेड़ नीचे जैसा है - यहां लीफ नोड्स 2, -2 और 6 हैं। यदि पॉइंटर नोड -5 की ओर इ