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

डेटा संरचना में रेड-ब्लैक ट्री में सम्मिलन (Insertion in the Red Black Tree)


रेड ब्लैक ट्री एक सेल्फ-बैलेंस्ड बाइनरी सर्च ट्री (Self-Balanced Binary Search Tree) है जिसमें ट्री के प्रत्येक नोड को या तो लाल (Red) या काले (Black) रंग से रंगा जाता है। रेड ब्लैक ट्री पर हम तीन प्रकार के संक्रियाएँ कर सकते हैं - खोज, सम्मिलन और विलोपन।

मान लीजिए हमें निम्नलिखित रेड ब्लैक ट्री में एक तत्व सम्मिलित करना है।

डेटा संरचना में रेड-ब्लैक ट्री में सम्मिलन (Insertion in the Red Black Tree)

रेड-ब्लैक ट्री में एक तत्व सम्मिलित करने का विचार बहुत सरल है - हम सम्मिलन ठीक वैसे ही करते हैं जैसे हम एक नियमित बाइनरी ट्री में सम्मिलित करते हैं। हम रूट नोड से शुरू करके नोड के रंग की जांच करते हैं और इसे एक विशेष स्थान पर सम्मिलित करते हैं। हालांकि, रेड-ब्लैक ट्री में एक तत्व सम्मिलित करने के लिए कुछ अतिरिक्त प्रक्रिया होनी चाहिए।

हमें पता होना चाहिए कि एक रेड-ब्लैक ट्री संतुलित होता है जब यह शर्तों का पालन करता है:

  • प्रत्येक रूट नोड काला होना चाहिए।

  • प्रत्येक नोड या तो लाल या काला होता है।

  • यदि एक नोड लाल है, तो उसके बच्चे काले होने चाहिए।

  • रूट से अंत तक का पथ में समान संख्या में काले नोड्स होने चाहिए।

यदि हम रेड-ब्लैक ट्री में एक नया नोड सम्मिलित करना चाहते हैं, तो हम सम्मिलन चरणों को देखकर ऐसा कर सकते हैं।

रेड ब्लैक ट्री में एक तत्व सम्मिलित करने के चरण –

  • जांचें कि ट्री खाली है या नहीं। यदि ट्री खाली है, तो एक नया नोड सम्मिलित करें और इसे काले रंग से रंगें। (क्योंकि रूट नोड हमेशा काले रंग का होना चाहिए)

  • अन्यथा यदि ट्री खाली नहीं है तो नए नोड को अंत में पत्ती नोड के रूप में सम्मिलित करें और इसे लाल रंग से रंगें।

  • यदि नए नोड का माता-पिता लाल है और उसका पड़ोसी (माता-पिता का) नोड भी लाल है तो दोनों पड़ोसी और माता-पिता और दादा-दादी (यदि यह रूट नोड नहीं है अन्यथा केवल माता-पिता और पड़ोसी का रंग बदलें) यानी काले रंग का करें।

  • यदि नए नोड का माता-पिता लाल है और उसका पड़ोसी (माता-पिता का) नोड खाली या NULL है, तो नए नोड और माता-पिता को घुमाएं (या तो बाएं-बाएं या बाएं-दाएं घुमाव)।

दो प्रकार के घूर्णन लागू होंगे - बाएं-बाएं घुमाव और बाएं-दाएं घुमाव। घुमाव केवल कुछ शर्तों में लागू होगा। शर्तें हैं:

  • यदि नए नोड का माता-पिता लाल है और पड़ोसी नोड खाली या NULL है, तो बाएं या दाएं घुमाव करें।

  • बाएं-बाएं घुमाव में माता-पिता और दादा-दादी का रंग बदलें। माता-पिता को दादा-दादी बनाएं और दादा-दादी को बच्चा बनाएं।

डेटा संरचना में रेड-ब्लैक ट्री में सम्मिलन (Insertion in the Red Black Tree)

डेटा संरचना में रेड-ब्लैक ट्री में सम्मिलन (Insertion in the Red Black Tree)

एल्गोरिदम

RBTreeInsertion(root,key)

// सम्मिलित नए नोड का रंग लाल है
color[key] <- Red
while(key ≠ root and color(p[key]) = Red) do
    if p[key] = left(p[p[key]]) 
        Then y ← right[p[p[key]] // यदि नए नोड का माता-पिता लाल है (यदि रूट नोड के बजाय दादा-दादी है) रंग बदलें।
        if color[y] = Red 
            then color(p[key]) ← Black 
                color(p[p[key]]) ← Red 
                key ← p[p[key]] 
        else if key = right[p[key]] 
            then key ← p[key] 
                // जब नए नोड का माता-पिता लाल रंग का है और उसका सहोदर NULL है 
                LeftRotate(root,key) 
                color(p[key]) ← Black 
                color(p[p[key]]) ← Red 
                RotateRight(root,p[p[key]]) 
    else left और right तत्वों का आदान-प्रदान करें ताकि यह संतुलित हो जाए।
color(root) ← Black

  1. डेटा संरचना में अंतराल हीप (Interval Heaps) डेटा संरचना में अंतराल हीप (Interval Heaps)

    यहाँ हम देखेंगे कि अंतराल हीप (Interval Heaps) क्या हैं। अंतराल हीप पूर्ण बाइनरी ट्री हैं, जिसमें, अंतिम को छोड़कर प्रत्येक नोड में दो तत्व होते हैं। मान लीजिए नोड P में दो तत्वों की प्राथमिकताएं a और b हैं। यहाँ हम a ≤ b मान रहे हैं। हम कहते हैं कि नोड P बंद अंतराल [a, b] को दर्शाता है। यहाँ a, P

  1. डेटा स्ट्रक्चर में बाइनरी ट्री ADT डेटा स्ट्रक्चर में बाइनरी ट्री ADT

    मूल अवधारणा (Basic Concept) बाइनरी ट्री को एक ऐसे ट्री के रूप में परिभाषित किया जाता है जिसमें कोई भी नोड दो से अधिक बच्चे (Children) नहीं रख सकता। किसी भी नोड की उच्चतम डिग्री (Degree) दो होती है। इसका अर्थ है कि बाइनरी ट्री की डिग्री शून्य, एक या दो हो सकती है। उपरोक्त आकृति में, बाइनरी ट्री मे

  1. डेटा स्ट्रक्चर में वर्चुअल ट्री में स्प्ले (Splay in Virtual Tree) डेटा स्ट्रक्चर में वर्चुअल ट्री में स्प्ले (Splay in Virtual Tree)

    वर्चुअल ट्री में, कुछ एज को सॉलिड (Solid) माना जाता है और कुछ को डैश्ड (Dashed)। सामान्य स्प्लेिंग (Splaying) केवल सॉलिड ट्रीज़ में की जाती है। वर्चुअल ट्री में नोड y पर स्प्ले करने के लिए, निम्न विधि लागू की जाती है। एल्गोरिदम ट्री को तीन बार देखता है, प्रत्येक पास में एक बार, और इसे बदलता है। पहल