मेरे पास Balanced BST
के बारे में सैद्धांतिक प्रश्न है।परफेक्ट बैलेंस्ड बाइनरी सर्च ट्री
मैं Perfect Balanced Tree
बनाना चाहता हूं जिसमें नियमित unbalanced BST
से 2^k - 1
नोड्स हैं। सबसे आसान समाधान मैं सोच सकता हूं कि एक क्रमबद्ध Array/Linked list
का उपयोग करना और सरणी को उप-सरणी में विभाजित करना है, और इससे Perfect Balanced BST
बनाएं।
हालांकि, बहुत बड़े वृक्ष आकार के मामले में, मुझे एक ही आकार में Array/List
बनाने की आवश्यकता होगी ताकि यह विधि बड़ी मात्रा में स्मृति का उपभोग करे।
एक और विकल्प AVL
रोटेशन फ़ंक्शंस का उपयोग करना है, तत्व द्वारा तत्व डालना और ट्री बैलेंस फैक्टर के आधार पर घूर्णन के साथ पेड़ को संतुलित करना - बाएं और दाएं उप पेड़ की तीन ऊंचाई।
मेरे सवाल कर रहे हैं मैं सही मेरी मान्यताओं के बारे में हूँ,? असंतुलित BST
से एक परिपूर्ण BST
बनाने का कोई अन्य तरीका है?
कुछ घूर्णन कार्य आपके बड़े पेड़ के मामले में सही समझ में आते हैं और मौजूदा संरचना को बदलने के बिना पेड़ को बदलना चाहते हैं। - क्या परिणाम वास्तव में पूरी तरह संतुलित होना चाहिए? प्रश्न की पृष्ठभूमि क्या है? – michas
हां, इसे पूरी तरह संतुलित होना चाहिए। यह एक अकादमिक परियोजना का हिस्सा है। "कुछ रोटेशन फ़ंक्शन" से आपका क्या मतलब है? जहां तक मुझे पता है कि चार घूर्णन कार्य हैं जो कार्यान्वित करने में काफी आसान हैं। – OlejkaKL
विभिन्न प्रकार के पेड़ घूर्णन के थोड़ा अलग तरीकों का उपयोग करते हैं। उदाहरण के लिए एवीएल और लाल-काले पेड़ की तुलना करें। – michas