द्विआधारी खोज वृक्ष की छपाई का स्तर

वोट
1

मैं एक द्विआधारी खोज वृक्ष डेटा संरचना वर्ग कि नोड्स जो पक्ष में वस्तुओं वर्ग कि एक द्विआधारी खोज वृक्ष की तरह कार्य करता हैं रखती है।

वर्ग यहाँ पोस्ट करने के लिए बहुत लंबा है, लेकिन मूल रूप से यह यह कैसे काम करता है। मैं BST के शीर्ष मूल्य मुद्रित करने के लिए चाहते हैं, तो मैं कहूंगा कि

print (self._root)

अगर मैं पेड़ के बाईं तरफ जाना चाहते थे (सही करने के लिए जाने के लिए के साथ एक ही हैं, बिल्कुल सही बाईं के बजाय डाल), मैं कहूंगा कि

print (self._root._left)

मुझे आशा है कि यह पर्याप्त है ताकि आप मुझे मेरी समस्या के साथ मदद कर सकते हैं

तो मेरी समस्या पर, अगर मैं एक BST है जैसे:

      6
     / \
    3   8
   / \   \
  1  4   10

मैं बाहर मुद्रित करने के लिए सक्षम होना चाहते हैं:

6

3
8

1
4
10

मैं एक पुनरावर्ती पार समारोह में लिखा है:

def traverse(self):

        a = []
        self._traverse_aux(self._root, a)   
        return a

def _traverse_aux(self, node, a):

        if node is not None:
            self._traverse_aux(node._left, a)
            a.append(node._value)
            self._traverse_aux(node._right, a)
        return

कैसे कभी, यह एक एकल सरणी में मानों प्रिंट:

[1, 3, 4, 6, 8, 10]

मैं इसे जिस तरह से मैं ऊपर चाहते हैं मुद्रित करने के लिए कैसे मिल सकता है?

19/03/2014 को 14:51
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
0

बेहतर है, तो आप रिकर्सिवली इस उत्तर देना चाहते हैं जा रहे हैं। विशेष रूप से ट्रेवर्सल के इस प्रकार चौड़ाई-पहले कहा जाता है। यहाँ हालांकि वे जावा में हैं, द्विआधारी खोज पेड़ जो आप के लिए उपयोगी हो सकता है की ट्रावर्सल पर कुछ नोट कर रहे हैं।

यहाँ भी एक बहुत समान (संभवतः नकल) सवाल है, हालांकि के रूप में यह रिकर्सिवली एक समाधान छोरों का उपयोग कर दिया जाता है हल करने के लिए विरोध किया है।

19/03/2014 को 15:08
का स्रोत उपयोगकर्ता

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