बैलेंस्ड ट्री की परिभाषा


102

मैं सोच रहा हूं कि क्या कोई मेरे लिए संतुलित पेड़ की परिभाषा को स्पष्ट कर सकता है। मेरे पास यह है कि "एक पेड़ संतुलित है यदि प्रत्येक उप-पेड़ संतुलित है और दो उप-पेड़ों की ऊंचाई सबसे अधिक एक से भिन्न होती है।

मैं माफी माँगता हूँ अगर यह एक गूंगा प्रश्न है, लेकिन क्या यह परिभाषा हर नोड पर एक पेड़ की पत्तियों पर या केवल बाएं और दाएं उप-पेड़ों पर जड़ से तुरंत लागू होती है? मुझे लगता है कि यह फ्रेम करने का एक और तरीका है, क्या यह संभव है कि एक पेड़ के आंतरिक नोड्स असंतुलित हों और पूरे पेड़ संतुलित रहें?


6
बस यह जोड़ना चाहता था कि हम Comp के बारे में बात कर रहे हैं। सबट्री की विज्ञान परिभाषा: ट्री टी का एक सबट्री टी में एक नोड से युक्त एक पेड़ है और टी में उसके सभी वंशज हैं। एक नियमित गणितीय परिभाषा के लिए (एक पेड़ का एक उपसमूह जो खुद एक पेड़ है) यह सच नहीं है ।
TT_

जवाबों:


123

आमतौर पर बाधा को प्रत्येक उपप्रकार के लिए पुनरावर्ती रूप से लागू किया जाता है। अर्थात्, पेड़ तभी संतुलित होता है जब:

  1. बाएँ और दाएँ सबटाइम्स की ऊँचाई सबसे अधिक एक से भिन्न होती है, और
  2. बाएं सबट्री संतुलित है, और
  3. सही सबट्री संतुलित है

इसके अनुसार, अगला पेड़ संतुलित है:

     A
   /   \
  B     C  
 /     / \  
D     E   F  
     /  
    G  

अगला एक संतुलित नहीं है क्योंकि C के उप-प्रकार उनकी ऊंचाई में 2 से भिन्न हैं:

     A
   /   \
  B     C   <-- difference = 2
 /     /
D     E  
     /  
    G  

उस ने कहा, पहले बिंदु का विशिष्ट अवरोध पेड़ के प्रकार पर निर्भर करता है। ऊपर सूचीबद्ध एवीएल पेड़ों के लिए विशिष्ट है ।

उदाहरण के लिए, लाल-काले पेड़ एक नरम बाधा डालते हैं।


52

"संतुलित" को परिभाषित करने के कई तरीके हैं। मुख्य लक्ष्य सभी नोड्स की गहराई को बनाए रखना है O(log(n))

यह मुझे प्रतीत होता है कि आप जिस बैलेंस कंडीशन की बात कर रहे थे, वह एवीएल ट्री के लिए है
यहां एवीएल पेड़ की संतुलन स्थिति की औपचारिक परिभाषा दी गई है :

एवीएल में किसी भी नोड के लिए, इसके बाएं सबट्री की ऊंचाई इसकी सही सबट्री की ऊंचाई से अधिकतम 1 से भिन्न होती है ।

अगला सवाल, " ऊँचाई " क्या है ?

एक बाइनरी ट्री में एक नोड की " ऊंचाई " उस नोड से एक पत्ती तक सबसे लंबे पथ की लंबाई है।

एक अजीब लेकिन आम मामला है:

लोग एक खाली पेड़ की ऊंचाई को परिभाषित करते हैं (-1)

उदाहरण के लिए, रूट का बायाँ बच्चा है null:

              A  (Height = 2)
           /     \
(height =-1)       B (Height = 1) <-- Unbalanced because 1-(-1)=2 >1
                    \
                     C (Height = 0)

निर्धारित करने के लिए दो और उदाहरण:

हाँ, एक संतुलित वृक्ष उदाहरण:

        A (h=3)
     /     \
 B(h=1)     C (h=2)        
/          /   \
D (h=0)  E(h=0)  F (h=1)
               /
              G (h=0)

नहीं, नहीं एक संतुलित ट्री उदाहरण:

        A (h=3)
     /     \
 B(h=0)     C (h=2)        <-- Unbalanced: 2-0 =2 > 1
           /   \
        E(h=1)  F (h=0)
        /     \
      H (h=0)   G (h=0)      

1
ध्यान दें कि यह परिभाषा संतुलित पेड़ों के असंतुलित उप-योग की अनुमति देती है। (उदा। एक बच्चे को D और दूसरे को G से जोड़कर ऊपर दिए गए संतुलित वृक्ष उदाहरण का विस्तार करें) क्या यह अभीष्ट है?
जीन

2
नहीं, यह नहीं है। " एवीएल में किसी भी नोड के लिए , इसके बाएं सबट्री की ऊंचाई इसकी सही सबट्री की ऊंचाई से अधिकतम 1 से भिन्न होती है।" यदि आप D से एक बच्चा जोड़ते हैं, तो B उपरोक्त नियम का पालन नहीं करेगा। इसलिए, पेड़ एक BBT नहीं होगा।
जॉन रेड

1
आपका उत्तर बहुत ही
क्रियात्मक है

9

इन दोनों बातों में कोई अंतर नहीं है। इसके बारे में सोचो।

आइए एक सरल परिभाषा लें, "एक सकारात्मक संख्या भले ही शून्य हो या वह संख्या शून्य से दो सम हो।" क्या यह कहता है even तो भी ६ है? या यह कहते ह 8 तो भी 6, 4, 2, और 0 होते हैं?

कोई अंतर नहीं है। अगर यह कहता है कि says सम है तो ६ सम है, यह भी कहता है ६ सम है तो ४ भी है। और इस प्रकार यह 4 भी कहता है कि 2 भी है। और इस प्रकार यह 2 कहता है कि यदि 0 भी है। तो अगर यह कहता है कि (सम है तो ६ सम है, यह (अप्रत्यक्ष रूप से) कहता है even तो भी ६, ४, २, और ० सम है।

यहाँ भी वही बात है। कोई भी अप्रत्यक्ष उप-वृक्ष प्रत्यक्ष उप-वृक्षों की श्रृंखला द्वारा पाया जा सकता है। तो भले ही यह केवल सीधे उप-पेड़ों पर लागू होता है, फिर भी यह अप्रत्यक्ष रूप से सभी उप-वृक्षों (और इस प्रकार सभी नोड्स) पर लागू होता है।


1
मान लीजिए कि रूट का मूल्य 15. सही है, मेरे पास 16,17,18 है। नीचे बाईं ओर मेरे पास 14,13,12 हैं। क्या वह संतुलित वृक्ष है? नोड से प्रत्येक उप-वृक्ष की ऊंचाई एक के भीतर है। लेकिन पहले नोड को जड़ से नीचे दाईं ओर ले जाएं, इसमें कोई बाएं बच्चे नहीं हैं, लेकिन इसके दाएं बच्चों की ऊंचाई 2 है। इसलिए नोड संतुलित नहीं है। क्या वो सही है?
मार्क सोरिक

1
सही बात। इस प्रकार पेड़ संतुलित नहीं है।
डेविड श्वार्ट्ज

1
तो एक पेड़ को संतुलित करने के लिए - प्रत्येक नोड को संतुलित होना चाहिए। सौंदर्य - आपकी मदद के लिए बहुत बहुत धन्यवाद।
मार्क सोरिक

1
@DavidSchwartz हम एक संतुलित पेड़ का उपयोग करने की कोशिश क्यों कर रहे हैं? अगर कोई पेड़ संतुलित है या नहीं तो हमें इसकी परवाह क्यों है?
देजेल

3
यह, अब तक, सबसे जटिल उत्तर है जो मैंने SO पर देखा है - किसी भी प्रश्न के लिए। यह कहने के लिए क्षमा करें।
ट्रेवर

4

संतुलित पेड़ एक ऐसा पेड़ है जिसकी ऊँचाई लॉग के क्रम (पेड़ में तत्वों की संख्या) की होती है।

height = O(log(n))
O, as in asymptotic notation i.e. height should have same or lower asymptotic
growth rate than log(n)
n: number of elements in the tree

दी गई परिभाषा "एक पेड़ प्रत्येक उप-पेड़ से संतुलित होता है और संतुलित होता है और दो उप-पेड़ों की ऊँचाई सबसे अधिक भिन्न होती है" इसके बाद एवीएल पेड़ों का पालन किया जाता है।

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


3

संतुलित वृक्ष का उद्देश्य पत्ती को न्यूनतम ट्रैवर्सल (न्यूनतम ऊंचाई) तक पहुंचाना है। पेड़ की डिग्री शाखाओं की संख्या माइनस 1. एक संतुलित पेड़ बाइनरी नहीं हो सकता है।


0
  1. एक पेड़ में एक नोड की ऊंचाई उस नोड से एक पत्ती तक सबसे लंबे मार्ग की लंबाई है, जो पथ के प्रारंभ और अंत दोनों को गिनता है।
  2. एक पेड़ में एक नोड ऊंचाई-संतुलित है यदि इसके उपरी की ऊंचाई 1 से अधिक नहीं है।
  3. एक पेड़ ऊंचाई-संतुलित है अगर उसके सभी नोड ऊंचाई-संतुलित हैं।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.