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

सी++ में बीएसटी में इनऑर्डर उत्तराधिकारी

मान लीजिए कि हमारे पास एक बाइनरी सर्च ट्री है और उसमें एक नोड है, तो हमें उस नोड के इन-ऑर्डर सक्सेसर को BST में खोजना होगा। जैसा कि हम जानते हैं कि एक नोड p का उत्तराधिकारी वह नोड होता है जिसकी सबसे छोटी कुंजी p.val से बड़ी होती है।

इसलिए, यदि इनपुट रूट =[2,1,3], p =1,

. जैसा है

सी++ में बीएसटी में इनऑर्डर उत्तराधिकारी

तो आउटपुट 2 होगा,

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

  • पुनरावर्ती विधि inorderSuccessor() को परिभाषित करें, यह जड़ लेगा और p

  • यदि रूट अशक्त है, तो -

    • वापसी शून्य

  • यदि मूल का मान <=p का मान है, तो -

    • रिटर्न इनऑर्डरसक्सेसर (रूट का अधिकार, पी)

  • अन्यथा

    • विकल्प:=inorderSuccessor (रूट के बाएँ, p)

    • वापसी (यदि विकल्प शून्य है, तो रूट करें, अन्यथा विकल्प)

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
class TreeNode{
public:
   int val;
   TreeNode *left, *right;
   TreeNode(int data){
      val = data;
      left = NULL;
      right = NULL;
   }
};
class Solution {
public:
   TreeNode* inorderSuccessor(TreeNode* root, TreeNode* p) {
      if(!root) return NULL;
      if(root->val <= p->val){
         return inorderSuccessor(root->right, p);
      }
      else{
         TreeNode* option = inorderSuccessor(root->left, p);
         return !option ? root : option;
      }
   }
};
main(){
   TreeNode *root = new TreeNode(2);
   root->left = new TreeNode(1);
   root->right = new TreeNode(3);
   TreeNode *p = root->left;
   Solution ob;
   cout << (ob.inorderSuccessor(root, p))->val;
}

इनपुट

{2,1,3},1

आउटपुट

2

  1. C++ में बाइनरी ट्री में नोड का प्रीऑर्डर उत्तराधिकारी

    इस समस्या में, हमें एक बाइनरी ट्री और एक नोड मान दिया जाता है। हमारा काम नोड के प्रीऑर्डर सक्सेसर को प्रिंट करना है। बाइनरी ट्री एक विशेष प्रकार का पेड़ है जिसमें प्रत्येक रूट नोड में अधिकतम 2 चाइल्ड नोड हो सकते हैं। ट्रैवर्सल अग्रिम-आदेश पेड़ के नोड्स को पार करने का एक तरीका है। इसमें हम पहले रूट

  1. C++ में BST के दो नोड्स के बीच अधिकतम तत्व

    समस्या कथन एन तत्वों की एक सरणी और दो पूर्णांक ए, बी को देखते हुए जो दिए गए सरणी से संबंधित है। एआर [0] से एआर [एन -1] तक तत्व डालने से बाइनरी सर्च ट्री बनाएं। कार्य A से B तक के पथ में अधिकतम तत्व को खोजना है। उदाहरण यदि सरणी {24, 23, 15, 36, 19, 41, 25, 35} है तो हम निम्न प्रकार से BST बना सकते

  1. C++ . में BST से तल और छत

    यहां हम देखेंगे कि बीएसटी से फ्लोर और सीलिंग वैल्यू कैसे पता करें। उदाहरण के लिए, यदि हम एक मेमोरी मैनेजमेंट सिस्टम बनाना चाहते हैं, जहां BST में फ्री नोड्स की व्यवस्था की जाती है। इनपुट अनुरोध के लिए सबसे उपयुक्त खोजें। मान लीजिए कि हम कुंजी मान से बड़े छोटे डेटा वाले पेड़ को नीचे ले जा रहे हैं, तो