2016-07-11 2 views
0

Мне нужна помощь в этом вопросе структуры данных. каждое дерево имеет эти свойства: право оставил цвет ключКак решить эту структуру данных

здесь подробности: картина, например, дерево https://i.gyazo.com/85a59c69301c214ddc03f2d54324ca6f.png

Хороший путь это путь, где родитель и ребенок не имеют одинаковые цвета (например, хороший путь - красный-белый-красный-белый или белый-красный-белый-красный)

Вам нужно найти самый длинный путь в заданном дереве и напечатать его длину. (В этом примере выходной вал будет 5)

, например, в этом дереве самый длинный путь 17-> 13-> 32-> 18-> 22

правила: вы можете иметь другие функции помочь вам. вы можете использовать фиксированное число переменных, таких как x, y, z. вы не можете использовать дополнительные структуры данных.

даже не уверен, что его рекурсия или нет.

+0

это вопрос из теста. за которую я учусь. – Anonymous

+0

Вам нужно показать, что вы пробовали, и где вы застряли. –

+0

представьте себе, если узел 18 был красным в этом случае 18 получит 3 с его левой стороны и право представляет собой лист, который возвращает 1 так, если 18 решает вернуть 5 (левый + 1 + правый) Как бы корень дерева (20) знал, что 18 решили отключиться от дерева, идя вправо? – Anonymous

ответ

0

Чтобы вы двигаетесь, давайте рассмотрим основные свойства, которые могут повлиять на юридическое дерево:

  • листьев узел (мертвый конец, длина возвращаемого 1)
  • и дети имеют такой же цвет, как родитель (тупик в родительском узле, возврат 0)
  • у одного ребенка есть цвет, отличный от родительского (следуйте за одной другой ветвью, возвращайте эту глубину + 1)
  • оба ребенка имеют цвет, отличный от родителя (следуйте за ними, возвратитесь влево + 1 + право)

Это должно помочь вам сформировать подробный псевдокод для решения.

Смежные вопросы