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

सी/सी ++ में एए पेड़?

कंप्यूटर विज्ञान में AA ट्री को संतुलित ट्री के रूप में परिभाषित किया गया है, जो ऑर्डर किए गए डेटा को कुशलतापूर्वक संग्रहीत करने और पुनर्प्राप्त करने के लिए लागू किया गया है। एए पेड़ों को लाल-काले पेड़ की विविधता के रूप में माना जाता है, बाइनरी सर्च ट्री का एक रूप जो प्रविष्टियों के कुशल जोड़ और विलोपन का समर्थन करता है। लाल-काले पेड़ों के विपरीत, एए पेड़ पर लाल नोड्स को केवल दाएं उपचाइल्ड के रूप में जोड़ा जा सकता है, बाएं उपचाइल्ड नहीं। इस ऑपरेशन का परिणाम 2-3-4 पेड़ के बजाय 2-3 पेड़ का अनुकरण है, जो रखरखाव कार्यों को सरल बनाता है। लाल-काले पेड़ के लिए रखरखाव एल्गोरिदम को पेड़ को ठीक से संतुलित करने के लिए सात अलग-अलग आकृतियों को मानने या विचार करने की आवश्यकता होती है -

सी/सी ++ में एए पेड़?


लाल-काले पेड़ के विपरीत, दूसरी ओर एक एए पेड़ को केवल दो आकृतियों को मानने या विचार करने की आवश्यकता होती है क्योंकि सख्त आवश्यकता है कि केवल सही लिंक लाल हो सकते हैं -

सी/सी ++ में एए पेड़?


घुमावों को संतुलित करना

जबकि लाल-काले पेड़ों को प्रति नोड (रंग) संतुलित मेटाडेटा की एक बिट की आवश्यकता होती है, एए पेड़ों को पूर्णांक "स्तर" के रूप में प्रति नोड मेटाडेटा के ओ (लॉग (लॉग (एन))) बिट्स की आवश्यकता होती है। नीचे दिए गए इनवेरिएंट AA ट्री के लिए होल्ड करते हैं -

  • प्रत्येक पत्ती नोड का स्तर एक माना जाता है।

  • प्रत्येक बाएं बच्चे का स्तर उसके माता-पिता के स्तर से ठीक एक छोटा होता है।

  • हर सही बच्चे का स्तर उसके माता-पिता के बराबर या उससे छोटा होता है।

  • हर सही पोते का स्तर अपने दादा-दादी के स्तर से काफी छोटा होता है।

  • एक से अधिक स्तर के प्रत्येक नोड में दो बच्चे होते हैं।

लाल-काले पेड़ को फिर से संतुलित करने की तुलना में AA ट्री को री-बैलेंस करना प्रक्रियात्मक रूप से बहुत आसान या सरल है।

एए पेड़ के मामले में संतुलन बहाल करने के लिए केवल दो अलग-अलग संचालन की आवश्यकता होती है:"स्क्यू" और "स्प्लिट"। तिरछा को एक बाएं क्षैतिज लिंक से युक्त एक उपट्री को बदलने के लिए एक सही रोटेशन के रूप में माना जाता है, जिसमें एक के बजाय एक सही क्षैतिज लिंक होता है। स्प्लिट के मामले में, यह एक उपट्री को बदलने के लिए एक बाएं रोटेशन और स्तर की वृद्धि है जिसमें दो या दो से अधिक लगातार दाएं क्षैतिज लिंक होते हैं जिसमें दो लगातार दाएं क्षैतिज लिंक होते हैं। संचालन, "तिरछा" और "विभाजन", नीचे समझाया गया है -

फ़ंक्शन तिरछा है

   input: An AA tree that needs to be rebalanced is represented by a node, t.
   output: The rebalanced AA tree is represented by another node.
if nil(t) then
return nil
else if nil(left(t)) then
return t
else if level(left(t)) == level(t) then
   Exchange the pointers of horizontal left links.
   l = left(t)
left(t) := right(l)
right(l) := t
return l
else
return t
end if
end function

सी/सी ++ में एए पेड़?


फ़ंक्शन स्प्लिट है

   input: An AA tree that needs to be rebalanced is represented by a node, t.
   output: The rebalanced AA tree is represented by another node.
if nil(t) then
return nil
else if nil(right(t)) or nil(right(right(t))) then
return t
else if level(t) == level(right(right(t))) then
We have two horizontal right links. The middle node is taken, elevate it, and return it.
      r = right(t)
right(t) := left(r)
left(r) := t
level(r) := level(r) + 1
return r
else
return t
end if
end function

सी/सी ++ में एए पेड़?

विभाजित करें -


  1. सी/सी++ में strcmp ()

    फ़ंक्शन strcmp() एक अंतर्निहित लाइब्रेरी फ़ंक्शन है और इसे string.h हेडर फ़ाइल में घोषित किया गया है। इस फ़ंक्शन का उपयोग स्ट्रिंग तर्कों की तुलना करने के लिए किया जाता है। यह स्ट्रिंग्स को लेक्सिकोग्राफ़िक रूप से तुलना करता है जिसका अर्थ है कि यह दोनों स्ट्रिंग्स कैरेक्टर की तुलना कैरेक्टर से करता

  1. strcpy() सी/सी++ में

    फ़ंक्शन strcpy() एक मानक लाइब्रेरी फ़ंक्शन है। इसका उपयोग एक स्ट्रिंग को दूसरे में कॉपी करने के लिए किया जाता है। सी भाषा में, इसे स्ट्रिंग.एच हेडर फ़ाइल में घोषित किया जाता है जबकि सी ++ भाषा में, इसे सीस्ट्रिंग हेडर फ़ाइल में घोषित किया जाता है। यह पॉइंटर को गंतव्य पर लौटाता है। यहाँ सी भाषा में

  1. सी ++ में वही पेड़

    मान लीजिए कि हमारे पास दो बाइनरी ट्री हैं; हमें यह जांचने के लिए एक फ़ंक्शन परिभाषित करना होगा कि वे समान हैं या नहीं। हम जानते हैं कि बाइनरी ट्री को समान माना जाता है जब वे संरचनात्मक रूप से समान होते हैं और नोड्स का मान समान होता है। इसलिए, यदि इनपुट [1,2,3], [1,2,3] जैसा है, तो आउटपुट सही होगा