Часто делегаты можно использовать для тонкой настройки алгоритмов, что позволит использовать один и тот же код для решения несколько разных задач.
Скачайте проект проекте Delegates.TreeTraversal
Перед вами три задачи:
Дано дерево категорий продуктов, в каждой категории могут быть другие категории и собственно продукты. Вам нужно вывести список продуктов.
Дано дерево задача, каждая задача может содержать подзадачи. Вам нужно вывести список таких задач, у которых нет подзадач.
Дано бинарное дерево, у которого каждый лист содержит величину, а каждый не-лист не содержит величины. Вам нужно вывести все величины, содержащиеся в этом дереве.
Вам нужно написать один алгоритм обхода дерева, который бы принимал в качестве аргументов делегаты, объясняющие алгоритму, как обходить дерево и какие величины выводить.
Слишком сложные делегаты могут затруднять чтение кода, поэтому из всего многообразия решения выберите решение, максимально понятное неподготовленному читателю.
После этого вам нужно написать реализации методов, указанных в тестах, так, чтобы тесты заработали.