Ниже приведена функция бинарного поиска (корень имеет левый и правый ребенок), которую я не совсем понимаю. В коде он возвращает список, который является самым длинным путем в бинарном дереве. Однако для детали: < /p>
return_path_left = list_longest_path(node.left)
return_path_right = list_longest_path(node.right)
if len(return_path_left) > len(return_path_right):
< /code>
Как сравнить два рекурсивного вызова? Например, если дерево < /p>
1
/ \
2
< /code>
list_longest_path(node.right) наверняка вернет [] . Но как сравнить list_longest_path (2) с [] ?
Кто -то помощь будет отличной.
def list_longest_path(node):
"""
List the data in a longest path of node.
@param BinaryTree|None node: tree to list longest path of
@rtype: list[object]
>>> list_longest_path(None)
[]
>>> list_longest_path(BinaryTree(5))
[5]
>>> b1 = BinaryTree(7)
>>> b2 = BinaryTree(3, BinaryTree(2), None)
>>> b3 = BinaryTree(5, b2, b1)
>>> list_longest_path(b3)
[5, 3, 2]
"""
if node is None:
return []
else:
return_path_left = list_longest_path(node.left)
return_path_right = list_longest_path(node.right)
if len(return_path_left) > len(return_path_right):
return [node.data] + return_path_left
else:
return [node.data] + return_path_right
Подробнее здесь: https://stackoverflow.com/questions/368 ... inary-tree
Как понять следующую рекурсивную функцию в бинарном дереве? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение