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

C++ में BST में इनऑर्डर सक्सेसर खोजें - सबसे छोटा बड़ा कुंजी


समस्या विवरण

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

उदाहरण के लिए, यदि इनपुट इस तरह का ट्री है:

C++ में BST में इनऑर्डर सक्सेसर खोजें - सबसे छोटा बड़ा कुंजी

और p = 1, तो आउटपुट 2 होगा।

समाधान दृष्टिकोण

BST गुण का उपयोग करके पुनरावर्ती दृष्टिकोण:

  1. पुनरावर्ती विधि inorderSuccessor() परिभाषित करें जो root और p लेती है
  2. यदि root null है, तो null लौटाएं
  3. यदि root का मान <= p का मान, तो दाएं उपट्री में खोजें
  4. अन्यथा:
    • option := बाएं उपट्री में inorderSuccessor()
    • लौटाएं (यदि option शून्य है तो root, अन्यथा option)

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

#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; 
        } 
    } 
}; 

int 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; 
    return 0;
}

इनपुट

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

आउटपुट

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

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

  1. C++ में बाइनरी खोज प्रोग्राम C++ में बाइनरी खोज प्रोग्राम

    बाइनरी खोज क्या है? बाइनरी खोज (आधा-अंतराल खोज) एक खोज एल्गोरिदम है जो क्रमबद्ध सरणी में लक्ष्य मान की स्थिति ढूंढता है। यह लक्ष्य मान की तुलना मध्य तत्व से करता है और खोज स्थान को आधा कर देता है। मुख्य बिंदु केवल क्रमबद्ध सरणी पर काम करता है समय जटिलता: O(log n) दुनिया के सभी नाम क्रमबद्ध हों तो

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

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