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

C++ में बाइनरी सर्च ट्री के इनऑर्डर उत्तराधिकारी को खोजने का कार्यक्रम

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

तो, अगर इनपुट पसंद है

C++ में बाइनरी सर्च ट्री के इनऑर्डर उत्तराधिकारी को खोजने का कार्यक्रम

और 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;
}

इनपुट

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

आउटपुट

2

  1. C++ में बाइनरी ट्री टू बाइनरी सर्च ट्री रूपांतरण

    एक बाइनरी ट्री एक विशेष प्रकार का पेड़ है जिसमें पेड़ के प्रत्येक नोड में अधिकतम दो बच्चे नोड हो सकते हैं। इन चाइल्ड नोड्स को राइट चाइल्ड और लेफ्ट चाइल्ड के रूप में जाना जाता है। एक साधारण बाइनरी ट्री है - बाइनरी सर्च ट्री (BST) एक विशेष प्रकार का वृक्ष है जो निम्नलिखित नियमों का पालन करता है -

  1. सी ++ प्रोग्राम में बाइनरी सर्च?

    द्विआधारी खोज, जिसे अर्ध-अंतराल खोज, लॉगरिदमिक खोज या बाइनरी चॉप के रूप में भी जाना जाता है, एक खोज एल्गोरिथ्म है जो एक क्रमबद्ध सरणी के भीतर लक्ष्य मान की स्थिति का पता लगाता है। बाइनरी खोज लक्ष्य मान की तुलना सरणी के मध्य तत्व से करती है। यदि वे समान नहीं हैं, तो आधा जिसमें लक्ष्य झूठ नहीं बोल सकत

  1. C++ प्रोग्राम बाइनरी सर्च ट्री पर लेफ्ट रोटेशन करने के लिए

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