जावा बहुरूपी द्विआधारी खोज वृक्ष

वोट
0

मैं कैसे एक बहुरूपी द्विआधारी खोज वृक्ष को लागू कर सकते downcasting या वर्ग की जाँच का उपयोग किए बिना (कि EmptyTree और NonEmptyTree का उपयोग करता है)?

02/04/2010 को 06:31
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
1

एक आम इंटरफेस जैसे बनाएँ:

interface TreeNode<K, V> {
   TreeNode<K, V> find(K key)
}

फिर वर्गों है कि आम इंटरफ़ेस को लागू प्रदान करते हैं:

class EmptyTree<K, V> implements TreeNode<K, V> {
   public TreeNode<K, V> find(K key) {
      // ...
   }
}

class NonEmptyTree<K, V> implements TreeNode<K, V> {
   public TreeNode<K, V> find(K searchKey) {
      // ...
   }
}

EmptyTree के लिए आपका क्रियान्वयन हमेशा (शून्य वापस लौट कर या एक अपवाद फेंक कर या नहीं) आइटम के लिए खोज में एक विफलता का संकेत है, जबकि NonEmptyTree अपने क्रियान्वयन की या तो खुद को वापस आ जाएगी (यदि उपलब्ध खोज कुंजी मैचों) या बाईं ओर प्रतिनिधि या सही subtrees। क्योंकि बाएं या दाएं सबट्री हमेशा उपलब्ध नहीं होगा (यह या तो होगा एक NonEmptyTree या एक EmptyTree हो), "NonEmptyTree" वर्ग बस आम इंटरफ़ेस के माध्यम से अपने बच्चों को देखें और इस तथ्य पर भरोसा करते हैं कि क्रम प्रकार सही काम करेंगे कर सकते हैं (इस प्रकार यह एल्गोरिथ्म के कार्यान्वयन में बच्चों के किसी भी कास्टिंग या प्रकार की जाँच करने के लिए आवश्यक नहीं है)।

केवल जगह है जहाँ आप क्रम प्रकार पता करने की जरूरत है जब आप बच्चों का निर्माण है।

02/04/2010 को 06:54
का स्रोत उपयोगकर्ता

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