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

C++ में BST से फ्लोर और सीलिंग मान प्राप्त करना


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

  • रूट ही कुंजी है। तब रूट मान सीलिंग मान है
  • यदि रूट डेटा < कुंजी, तो सीलिंग मान बाएं सबट्री में नहीं होगा, फिर दाएं सबट्री में आगे बढ़ें, और समस्या डोमेन को कम करें
  • यदि रूट डेटा > कुंजी, तो सीलिंग मान दाएं सबट्री में हो सकता है, हम बाएं सबट्री में कुंजी से बड़ा डेटा वाला नोड ढूंढ सकते हैं, यदि ऐसा कोई तत्व मौजूद नहीं है, तो रूट सीलिंग मान है।

मान लीजिए ट्री ऐसा है -

C++ में BST से फ्लोर और सीलिंग मान प्राप्त करना

0, 1, 2 की सीलिंग 2 है, 3, 4 की सीलिंग 4 है और इसी तरह

यहां हम केवल सीलिंग फंक्शन देखेंगे, यदि हम इसे थोड़ा संशोधित करें, तो हम फ्लोर मान प्राप्त कर सकते हैं।

उदाहरण

#include <iostream> using namespace std; class node {    public:    int key;    node* left;    node* right; }; node* getNode(int key) {    node* newNode = new node();    newNode->key = key;    newNode->left = NULL;    newNode->right = NULL;    return newNode; } int ceiling(node* root, int num) {    if (root == NULL)    return -1;    if (root->key == num)       return root->key;    if (root->key < num)       return ceiling(root->right, num);    int ceil = ceiling(root->left, num);    return (ceil >= num) ? ceil : root->key; } int main() {    node* root = getNode(8);    root->left = getNode(4);    root->right = getNode(12);    root->left->left = getNode(2);    root->left->right = getNode(6);    root->right->left = getNode(10);    root->right->right = getNode(14);    for (int i = 0; i < 16; i++)    cout << i << "\tCeiling: " << ceiling(root, i) << endl; }

आउटपुट

0 Ceiling: 2 1 Ceiling: 2 2 Ceiling: 2 3 Ceiling: 4 4 Ceiling: 4 5 Ceiling: 6 6 Ceiling: 6 7 Ceiling: 8 8 Ceiling: 8 9 Ceiling: 10 10 Ceiling: 10 11 Ceiling: 12 12 Ceiling: 12 13 Ceiling: 14 14 Ceiling: 14 15 Ceiling: -1

  1. C++ में इनऑर्डर और पोस्टऑर्डर ट्रैवर्सल से प्रीऑर्डर C++ में इनऑर्डर और पोस्टऑर्डर ट्रैवर्सल से प्रीऑर्डर

    इस समस्या में, हमें बाइनरी ट्री का इनऑर्डर और पोस्टऑर्डर ट्रैवर्सल दिया गया है। हमारा कार्य ट्री का पोस्टऑर्डर ट्रैवर्सल प्रिंट करना है।समस्या को समझने के लिए एक उदाहरण लेते हैंInput:inorder: 16 7 21 12 1 5 9 postorder: 16 21 7 1 9 5 12 Output: preorder: 12 7 16 21 5 1 9 Explanation: the binary tree

  1. - C++ में सील (ceil) और फ्लोर (floor) फ़ंक्शंस

    ceil फ़ंक्शन दिए गए मान के बराबर या उससे बड़ा सबसे छोटा पूर्णांक मान लौटाता है। <cmath> हेडर में घोषित। सिंगल पैरामीटर लेता है (double/float/long double)। सिंटैक्स double ceil(double x); float ceil(float x); उदाहरण #include <iostream> #include <cmath> using namespace std; int m

  1. - Python में floor() और ceil() फ़ंक्शन

    ये दो मेथड Python math मॉड्यूल का हिस्सा हैं जो भिन्नात्मक संख्या के निकटतम पूर्णांक मान प्राप्त करने में मदद करते हैं।floor()यह दशमलव के साथ एक संख्या को पैरामीटर के रूप में स्वीकार करता है और वह पूर्णांक लौटाता है जो संख्या से छोटा होता है।सिंटैक्सSyntax: floor(x) जहां x एक न्यूमेरिक मान हैfloor()