क्यों बाइनरी खोजें पेड़?

वोट
6

मैं द्विआधारी खोज वृक्ष पढ़ रहा था और सोच रहा था कि क्यों हम सब पर BST की ज़रूरत है? सभी चीजों के रूप में तक मुझे पता है भी सरल क्रमबद्ध सरणियों का उपयोग कर प्राप्त हो सकता है। उदाहरण के लिए - के लिए एक BST n तत्वों के होने का निर्माण करने के लिए, हम की आवश्यकता है n*O(log n)समय यानी O(nlog n)और देखने का समय है O(log n)। लेकिन इस बात को भी सरणी का उपयोग कर प्राप्त किया जा सकता है। हम एक हल कर सरणी (की आवश्यकता हो सकती है O(nlog n)कि यह भी है समय), और देखने के लिए समय O(log n)यानी द्विआधारी खोज algo। तो फिर क्यों हम सब में एक और डेटा संरचना की जरूरत है? वहाँ जो उन्हें ऐसी क्या खास बात करना BST के किसी भी अन्य उपयोग / आवेदन कर रहे हैं?

--Ravi

14/10/2010 को 16:28
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


4 जवाब

वोट
4

कैसे हल कर प्रविष्टि समय के बारे में?

14/10/2010 को 16:30
का स्रोत उपयोगकर्ता

वोट
1

ग्राफिक्स प्रोग्रामिंग में आप वस्तु (यानी जो न सिर्फ एक बिंदु प्रत्येक आयाम में एक अंतराल का प्रतिनिधित्व करते हैं) आप एक द्विआधारी पेड़ (आमतौर पर एक octree) जहाँ वे पूरी तरह से फिट की सबसे छोटी स्तर में जोड़ सकते हैं बढ़ा चुके हैं।

और अगर आप नहीं पेड़ / sortedlist हे (एन) यादृच्छिक प्रविष्टि समय एक सूची में पूर्व की गणना करते निषेधात्मक धीमी गति से हो सकता है। दूसरी ओर एक पेड़ में समावेशन समय केवल ओ (लॉग (एन)) है।

14/10/2010 को 16:36
का स्रोत उपयोगकर्ता

वोट
9

सरणी यदि आप लिखने के बारे में एक बार बात कर रहे हैं, बातचीत के कई बार प्रकार पढ़ा महान हैं। यह जब आप डालने, अदला-बदली करने के लिए नीचे लाने के लिए है, और विलोपन जिसमें BST वास्तव में एक सरणी की तुलना में चमक शुरू करते हैं। चूंकि वे नोड आधारित है, बजाय स्मृति का एक सन्निहित हिस्सा के आधार पर कर रहे हैं, या तो संग्रह में या संग्रह से बाहर एक तत्व हिलाने की लागत तेजी से, जबकि अभी भी संग्रह की क्रमबद्ध प्रकृति को बनाए रखने के लिए है।

के रूप में आप सरणियों बनाम जुड़ा हुआ सूचियों के बीच प्रविष्टि में अंतर होगा इसके बारे में सोचो। यह एक अति सरलीकरण है, लेकिन यह लाभ मैं ऊपर उल्लेख किया गया है का एक पहलू पर प्रकाश डाला गया।

14/10/2010 को 16:53
का स्रोत उपयोगकर्ता

वोट
7

कल्पना कीजिए कि आप एक लाख तत्वों के साथ एक सरणी है।

आप स्थान 5 पर एक तत्व सम्मिलित करना चाहते हैं।

तो अगर आप सरणी के अंत में और फिर प्रकार डालें।

मान लीजिए कि सरणी भरा है दो; कि हे (nlog एन) है, जो 1,000,000 * 6 = 6,000,000 संचालन है।

कल्पना कीजिए कि आप एक संतुलित पेड़ है।

यही कारण है कि हे (लॉग एन) है, के साथ साथ संतुलन के लिए एक सा = 6 + एक सा है, यह 10 आपरेशन कहते हैं।

तो, तुम सिर्फ 6,000,000 अपने सरणी छँटाई ऑप्स खर्च किया है। इसके बाद आप करना चाहते हैं लगता है कि तत्व। आप क्या करते हैं? द्विआधारी खोज - हे (लॉग एन) - जो है वास्तव में आप जब तुम पेड़ में खोज करने के लिए जा रहे हैं क्या के रूप में ही!

अब कल्पना आप -another- तत्व आवंटित करना चाहते।

आपका सरणी भर गया है! आप क्या करते हैं? n अतिरिक्त तत्वों के साथ सरणी फिर से आवंटित और बहुत memcpy? क्या तुम सच में 4mbytes memcpy करना चाहते हैं?

एक पेड़ में, आप बस एक और तत्व जोड़ ...

16/10/2010 को 10:14
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more