किसी को भी बीच के अंतर को समझाने कृपया द्विआधारी पेड़ और द्विआधारी खोज वृक्ष एक उदाहरण के साथ ?
द्विआधारी पेड़ और द्विआधारी खोज वृक्ष के बीच अंतर
द्विआधारी पेड़: पेड़ जहां प्रत्येक नोड दो पत्तियां अप करने के लिए है
1
/ \
2 3
द्विआधारी खोज वृक्ष: के लिए प्रयुक्त खोज । एक द्विआधारी पेड़ जहां छोड़ दिया बच्चे शामिल हैं केवल माता पिता नोड से कम मूल्यों के साथ नोड्स, और जहां सही बच्चे केवल से अधिक या माता पिता के बराबर मूल्यों के साथ नोड्स में शामिल है।
2
/ \
1 3
एक द्विआधारी पेड़ नोड्स, जहां प्रत्येक नोड "बाएं" सूचक, एक "सही" सूचक है, और एक डेटा तत्व शामिल हैं से बना है। "रूट" पेड़ में सर्वोच्च नोड के लिए सूचक अंक। छोड़ दिया और सही संकेत रिकर्सिवली दोनों तरफ छोटे "उपतरू" को इंगित। खाली पेड़ - एक नल पॉइंटर कोई तत्वों के साथ एक द्विआधारी पेड़ प्रतिनिधित्व करता है। औपचारिक पुनरावर्ती परिभाषा है: एक द्विआधारी पेड़ है या तो खाली (एक अशक्त सूचक द्वारा प्रतिनिधित्व), या एक ही नोड, से बना है जहां छोड़ दिया और सही संकेत (पुनरावर्ती परिभाषा आगे) एक द्विआधारी पेड़ से प्रत्येक बिंदु।
एक द्विआधारी खोज वृक्ष (बीएसटी) या "का आदेश दिया द्विआधारी पेड़" बाइनरी पेड़ जहां नोड क्रम में व्यवस्थित कर रहे हैं का एक प्रकार है: प्रत्येक नोड के लिए, अपनी बाईं सबट्री में सभी तत्वों नोड (<) को कम कर रहे हैं, और सभी तत्वों अपने अधिकार सबट्री में नोड से अधिक हैं (>)।
5
/ \
3 6
/ \ \
1 4 9
पेड़ के ऊपर दिखाए गए एक द्विआधारी खोज वृक्ष है - "रूट" नोड एक 5 है, और उसके लिए छोड़ दिया सबट्री नोड्स (1, 3, 4) कर रहे हैं <5, और इसकी सही सबट्री नोड्स (6, 9) कर रहे हैं> 5। रिकर्सिवली, subtrees में से प्रत्येक भी द्विआधारी खोज वृक्ष बाधा का पालन करना चाहिए: (1, 3, 4) सबट्री में, 3 जड़, 1 <3 और 4> 3 है।
समस्याओं में सटीक शब्द से सावधान रहें - एक "बाइनरी खोज पेड़" एक "बाइनरी पेड़" से अलग है।
एक द्विआधारी खोज वृक्ष जो निम्नलिखित संपत्ति दर्शाती द्विआधारी पेड़ की एक विशेष प्रकार का है: किसी भी नोड n के लिए, एन के बाईं सबट्री में हर वंशज नोड के मूल्य n के मूल्य से भी कम है, और सही सबट्री में हर वंशज नोड के मूल्य है n के मूल्य से अधिक।
जैसा कि हर कोई इसके बाद के संस्करण द्विआधारी पेड़ और द्विआधारी खोज वृक्ष बीच अंतर के बारे में विस्तार से बताया गया है, मैं सिर्फ परीक्षण करने के लिए कैसे क्या दिया द्विआधारी पेड़ द्विआधारी खोज वृक्ष है जोड़ने कर रहा हूँ।
boolean b = new Sample().isBinarySearchTree(n1, Integer.MIN_VALUE, Integer.MAX_VALUE);
.......
.......
.......
public boolean isBinarySearchTree(TreeNode node, int min, int max)
{
if(node == null)
{
return true;
}
boolean left = isBinarySearchTree(node.getLeft(), min, node.getValue());
boolean right = isBinarySearchTree(node.getRight(), node.getValue(), max);
return left && right && (node.getValue()<max) && (node.getValue()>=min);
}
आशा है इससे आपकी मदद होगी। क्षमा करें मैं विषय से डाइवर्ट कर रहा हूँ अगर के रूप में मैं यह महसूस किया यहाँ यह उल्लेख के लायक है।
बाइनरी ट्री दो बच्चे (बाएं बच्चे और सही बच्चा) के साथ पेड़ की एक विशेष रूप है। यह बस ट्री संरचना में डेटा की प्रस्तुति होती है
द्विआधारी खोज वृक्ष (बीएसटी) बाइनरी ट्री कि निम्न स्थिति इस प्रकार की एक विशेष प्रकार है:
- बाईं चाइल्ड नोड अपनी मूल नोड से छोटा होता है
- सही चाइल्ड नोड अपनी मूल नोड से अधिक है
एक द्विआधारी पेड़ एक पेड़ जिसका बच्चों कभी नहीं दो से अधिक कर रहे हैं। एक द्विआधारी खोज वृक्ष अपरिवर्तनीय इस प्रकार है कि बाईं बच्चे, रूट नोड के प्रमुख तुलना में एक छोटे मान होना चाहिए, जबकि सही बच्चे रूट नोड के प्रमुख की तुलना में अधिक मान होना चाहिए।
द्विआधारी खोज वृक्ष: जब ट्रेवर्सल inorder द्विआधारी पेड़ पर किया जाता है, तो आप शामिल किए गए आइटम द्विआधारी पेड़ की क्रमबद्ध मूल्यों को प्राप्त: कोई क्रमबद्ध आदेश ट्रावर्सल के किसी भी प्रकार में पाया जाता है
जांच करने के लिए wheather या नहीं एक दिया बाइनरी ट्री द्विआधारी खोज वृक्ष यहाँ है एक वैकल्पिक दृष्टिकोण है।
ट्री पार में Inorder फैशन (यानी वाम बाल -> जनक -> सही बच्चा), स्टोर चल नोड डाटा एक अस्थायी चर में मान लीजिए कि अस्थायी , बस में भंडारण से पहले अस्थायी , चेक wheather वर्तमान नोड के डेटा उच्च उसके बाद पिछले एक या नहीं है । तो बस को तोड़ने के लिए इसे बाहर, ट्री खोजें ट्री बाकी तक अंत पार बाइनरी नहीं है।
नीचे जावा के साथ एक उदाहरण है:
public static boolean isBinarySearchTree(Tree root)
{
if(root==null)
return false;
isBinarySearchTree(root.left);
if(tree.data<temp)
return false;
else
temp=tree.data;
isBinarySearchTree(root.right);
return true;
}
बाहर अस्थायी चर बनाए रखें
बाइनरी ट्री एक के लिए खड़ा है डेटा संरचना जो से बना है नोड्स कर सकते हैं कि केवल है दो बच्चों संदर्भ।
द्विआधारी खोज वृक्ष ( बीएसटी ) दूसरी तरफ, की एक विशेष रूप है बाइनरी ट्री डेटा संरचना है जहां प्रत्येक नोड एक तुलनीय महत्व है, और छोटे मूल्यवान छोड़ दिया से जुड़ी बच्चों और बड़ा मूल्यवान बच्चों अधिकार से जुड़ी।
इस प्रकार, सभी BST के हैं बाइनरी ट्री लेकिन केवल कुछ बाइनरी ट्री रों भी हो सकता है ' BST । सूचित करें कि BST का एक सबसेट है बाइनरी ट्री ।
तो, बाइनरी ट्री की तुलना में एक सामान्य डेटा संरचना के अधिक है द्विआधारी खोज वृक्ष । और यह भी आपको सूचित करने के कि द्विआधारी खोज वृक्ष एक है क्रमबद्ध पेड़ जबकि सामान्य के लिए नियमों की ऐसी कोई सेट है बाइनरी ट्री ।
बाइनरी ट्री
एक Binary Treeजो है नहीं एक BST;
5
/ \
/ \
9 2
/ \ / \
15 17 19 21
द्विआधारी खोज वृक्ष (अनुसार क्रमबद्ध ट्री)
एक द्विआधारी खोज वृक्ष जो भी एक है बाइनरी ट्री ;
50
/ \
/ \
25 75
/ \ / \
20 30 70 80
द्विआधारी खोज वृक्ष नोड संपत्ति
इसके अलावा किसी भी के लिए सूचित करें कि माता पिता नोड में BST ;
सभी बाईं नोड्स माता पिता नोड के मूल्य की तुलना में छोटे मूल्य की है। ऊपरी उदाहरण में, मूल्यों के साथ नोड्स {20, 25, 30} जो कर रहे हैं सभी बाईं तरफ स्थित ( बाईं वंशज 50 के), 50 से छोटे हैं।
सब ठीक है नोड्स माता पिता नोड के मूल्य से अधिक मूल्य की है। ऊपरी उदाहरण में, मान {70, 75, 80} जो कर रहे हैं के साथ नोड्स सब ठीक पर स्थित ( सही वंशज 50 के), 50 से अधिक है।
कोई के लिए इस तरह के एक नियम है बाइनरी ट्री नोड। के लिए केवल नियम बाइनरी ट्री नोड दो बच्चों के होने तो यह अपने आप में स्वयं बताता है कि क्यों कहा जाता है कि है द्विआधारी ।
द्विआधारी पेड़
द्विआधारी पेड़ हो सकता है कुछ भी जो 2 बच्चे और 1 पैरेंट है। यह लागू किया जा सकता लिंक्ड सूची या सरणी के रूप में, या अपने कस्टम एपीआई के साथ। एक बार जब आप इसे में अधिक विशिष्ट नियम जोड़ने के लिए शुरू करते हैं, इसे और अधिक हो जाता है विशेष पेड़ । सबसे आम जाना जाता कार्यान्वयन कि, सही पर छोड़ दिया और बड़ों पर छोटे नोड्स जोड़ने है।
उदाहरण के लिए, आकार 9 और ऊंचाई 3 के एक लेबल द्विआधारी पेड़, एक रूट नोड जिसका मूल्य के साथ 2. पेड़ है असंतुलित और नहीं हल कर । https://en.wikipedia.org/wiki/Binary_tree
उदाहरण के लिए, बाईं तरफ के पेड़ में, एक 6 बच्चों {बी, सी, डी, ई, एफ, जी} है। यह सही पर द्विआधारी पेड़ में परिवर्तित किया जा सकता है।
द्विआधारी खोज
बाइनरी खोजें तकनीक / एल्गोरिथ्म जो नोड श्रृंखला पर विशिष्ट आइटम खोजने के लिए इस्तेमाल किया जाता है। क्रमबद्ध सरणियों पर द्विआधारी खोज काम करता है ।
द्विआधारी खोज करने के लिए लक्ष्य मूल्य की तुलना मध्य तत्व सरणी के; अगर वे असमान हैं, आधा जिसमें लक्ष्य झूठ नहीं कर सकते हैं बाहर कर दिया जाता है और शेष आधे पर खोज जारी है जब तक यह सफल हुआ या शेष आधा खाली है। https://en.wikipedia.org/wiki/Binary_search_algorithm
एक पेड़ का प्रतिनिधित्व द्विआधारी खोज । सरणी यहाँ खोजा जा रहा [20, 30, 40, 50, 90, 100] है, और लक्ष्य मूल्य 40 है।
द्विआधारी खोज वृक्ष
यह द्विआधारी पेड़ के कार्यान्वयन से एक है। इस के लिए विशेष है खोज ।
द्विआधारी खोज वृक्ष और बी पेड़ डेटा संरचना पर आधारित होते हैं द्विआधारी खोज ।
द्विआधारी खोज के पेड़ (बीएसटी), कभी कभी आदेश दिया या हल कर बुलाया द्विआधारी पेड़, एक हैं कंटेनर के विशेष प्रकार : डाटा संरचनाओं कि स्मृति में (जैसे नंबर, नाम आदि) "आइटम" की दुकान। https://en.wikipedia.org/wiki/Binary_search_tree
जड़ में आकार 9 और गहराई 3 का एक द्विआधारी खोज वृक्ष, 8 के साथ। पत्तियों से तैयार नहीं कर रहे हैं।
और अंत में अच्छी तरह से ज्ञात डेटा संरचनाओं और एल्गोरिदम के प्रदर्शन की तुलना करने के लिए महान स्कीमा लागू:
छवि से लिया एल्गोरिदम (4 संस्करण)
एक द्विआधारी खोज ट्री में सभी नोड्स एक विशेष क्रम में व्यवस्थित कर रहे हैं - एक रूट नोड के बाईं ओर नोड्स एक छोटे मूल्य की तुलना में यह जड़ है, और एक नोड के अधिकार के लिए सभी नोड्स के मूल्य से अधिक मान हो है जड़।
एक पेड़ एक द्विआधारी पेड़ के रूप में कहा जा सकता है यदि और केवल यदि नोड्स में से किसी के बच्चों की अधिकतम संख्या दो है।
एक पेड़ एक द्विआधारी खोज वृक्ष के रूप में कहा जा सकता है यदि और केवल यदि नोड्स में से किसी के बच्चों की अधिकतम संख्या दो है और बाईं बच्चे हमेशा सही बच्चे की तुलना में छोटा होता है।



















