कई एल्गोरिदम निर्दिष्ट करेंगे कि डुप्लिकेट को बाहर रखा गया है। उदाहरण के लिए, एमआईटी एल्गोरिदम पुस्तक में उदाहरण एल्गोरिदम आमतौर पर डुप्लिकेट के बिना उदाहरण प्रस्तुत करते हैं। यह डुप्लिकेट को लागू करने के लिए काफी तुच्छ है (या तो नोड पर एक सूची के रूप में, या एक विशेष दिशा में।)
अधिकांश (जो मैंने देखा है) बाएं बच्चों को <= और दाएं बच्चों को> के रूप में निर्दिष्ट करते हैं। व्यावहारिक रूप से, एक बीएसटी जो दाएं या बाएं बच्चों को रूट नोड के बराबर होने की अनुमति देता है, एक खोज को समाप्त करने के लिए अतिरिक्त कम्प्यूटेशनल चरणों की आवश्यकता होगी जहां डुप्लिकेट नोड्स की अनुमति है।
डुप्लिकेट को स्टोर करने के लिए नोड पर एक सूची का उपयोग करना सबसे अच्छा है, क्योंकि नोड के एक तरफ '=' मान डालने के लिए उस तरफ के पेड़ को फिर से लिखना होगा ताकि नोड को बच्चे के रूप में रखा जा सके, या नोड को एक भव्य के रूप में रखा जाए। -बच्चों, नीचे कुछ बिंदु पर, जो खोज दक्षता में से कुछ को समाप्त करता है।
आपको याद रखना होगा, कक्षा के अधिकांश उदाहरण अवधारणा को चित्रित करने और वितरित करने के लिए सरल हैं। वे कई वास्तविक दुनिया की स्थितियों में स्क्वाट के लायक नहीं हैं। लेकिन बयान, "प्रत्येक तत्व में एक कुंजी होती है और किसी भी दो तत्वों में समान कुंजी नहीं होती है", तत्व नोड पर एक सूची के उपयोग से उल्लंघन नहीं किया जाता है।
तो अपने डेटा संरचनाओं पुस्तक क्या कहा के साथ जाओ!
संपादित करें:
बाइनरी सर्च ट्री की यूनिवर्सल डेफिनिशन में दो दिशाओं में से एक में डेटा संरचना का पता लगाने के आधार पर स्टोरिंग और खोज शामिल है। व्यावहारिक अर्थ में, इसका मतलब है कि यदि मूल्य <> है, तो आप डेटा संरचना को दो 'दिशाओं' में से एक में पार करते हैं। तो, उस अर्थ में, डुप्लिकेट मान बिल्कुल भी कोई मतलब नहीं है।
यह बीएसपी, या बाइनरी सर्च विभाजन से अलग है, लेकिन यह सब अलग नहीं है। खोज करने के लिए एल्गोरिथ्म में 'यात्रा' के लिए दो दिशाओं में से एक है, या यह किया जाता है (सफलतापूर्वक या नहीं।) इसलिए मैं माफी मांगता हूं कि मेरे मूल उत्तर ने 'सार्वभौमिक परिभाषा' की अवधारणा को संबोधित नहीं किया, क्योंकि डुप्लिकेट वास्तव में एक अलग हैं। विषय (एक सफल खोज के बाद आप जिस चीज से निपटते हैं, वह बाइनरी खोज के हिस्से के रूप में नहीं।)