Как реализовать полиморфное двоичное дерево поиска (которое использует EmptyTree и NonEmptyTree) без использования downcasting или проверки класса?java полиморфное двоичное дерево поиска
ответ
Создание общего интерфейса, такие как:
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 всегда будет указывать на неисправность в поиске товара (путем возврата null или путем исключения исключения), в то время как ваша реализация NonEmptyTree либо вернется сама (если предоставленный ключ поиска совпадает), либо делегирует в левое или правое поддеревья. Поскольку левое или правое поддерево будет всегда существовать (оно будет либо NonEmptyTree, либо EmptyTree), класс «NonEmptyTree» может просто ссылаться на своих дочерних элементов через общий интерфейс и полагаться на то, что тип выполнения будет правильным. (при этом нет необходимости выполнять кастинг или проверку типов детей при реализации алгоритма).
Единственное место, где вам нужно знать тип выполнения, - это когда вы создаете детей.
- 1. Двоичное дерево поиска - Java
- 2. Двоичное дерево/двоичное дерево поиска
- 3. Резьбовое двоичное дерево поиска Java
- 4. Двоичное дерево поиска toString Java
- 5. Двоичное дерево поиска в Java
- 6. java-рекурсивное двоичное дерево поиска
- 7. Двоичное дерево поиска поиска:
- 8. Двоичное дерево поиска поиска
- 9. Двоичное дерево в двоичное дерево поиска (BST)
- 10. Двоичное дерево поиска?
- 11. Двоичное дерево поиска - отсортировано?
- 12. Двоичное дерево поиска строк
- 13. Двоичное дерево поиска
- 14. Двоичное дерево поиска - вставка
- 15. Двоичное дерево поиска toString
- 16. C++ двоичное дерево поиска
- 17. двоичное дерево поиска bst
- 18. Двоичное дерево поиска, высота
- 19. Двоичное дерево поиска: Вставка
- 20. Двоичное дерево поиска C++
- 21. Двоичное дерево поиска? Алгоритм
- 22. python двоичное дерево поиска
- 23. Двоичное дерево поиска Пояснение
- 24. Сбалансированное двоичное дерево поиска
- 25. Двоичное дерево поиска слева.
- 26. Почему двоичное дерево поиска?
- 27. Двоичное дерево поиска delete
- 28. Двоичное дерево поиска Удалить
- 29. Двоичное дерево поиска - PrintInOrder();
- 30. Двоичное дерево поиска C++