2014-10-21 2 views
0

Прежде всего это вопрос домашней работы, но я не прошу решения. У меня есть некоторые идеи о том, с чего начать, но я также хотел бы получить некоторые предложения.Найти максимальную степень узлов в дереве

Это вопрос: Задать алгоритм max-degree (r), который получает в качестве входного сигнала корень r дерева, и выводит максимальную степень узлов в дереве .

Я пытался использовать метод children() для дерева ADT, но этот метод возвращает итерируемую коллекцию. Я даже не знаю, что такое итеративная коллекция или выглядит так, если бы кто-нибудь мог привести пример использования children() для древовидного объекта, что было бы очень полезно. Кроме того, если вы считаете, что я неправильно использую эту проблему, пытаясь использовать метод children(), скажите об этом.

+0

Какой язык вы используете? – SnareChops

+0

java, но я просто пишу псевдокод для вопроса. Как и когда я прошу пример итерабельной коллекции, она даже не должна быть связана с деревьями, я просто имею нулевое представление о том, что это такое в первую очередь, поэтому любой пример будет очень полезен. – user134454

+0

Не слишком знакомы с методом 'children()' в Java, но итеративная коллекция звучит как массив или список. Попробуйте использовать 'foreach' на объекте, возвращенном из' children() ', который должен позволить вам получить доступ к каждому отдельному объекту, содержащемуся в коллекции. Предоставление большего, чем это, будет отвечать на вашу домашнюю работу за вас. – SnareChops

ответ

0

Вы должны проверить всех детей и взять максимум degree. Вы можете перемещаться по дереву, как в DFS (здесь BFS требуется больше памяти). В pesudo-коде может выглядеть так:

def max-degree(vertex root) 
    solution = local_degree 
    foreach(vertex x : root.children()) 
     solution = max(solution, max-degree(x)) 
    return solution 

Особый случай является корнем дерева, если вы не хотите, чтобы принять во внимание его степень. Но это легко решить.