Вернуть путь двоичного дерева с указанным значением - PullRequest
0 голосов
/ 22 апреля 2020

У меня проблемы с домашним заданием.

Значение пути должно равняться значению, переданному в параметр. Если найден путь, который соответствует этому значению, я должен вернуть повороты этого пути (например, влево <-> вправо <-> влево).

def path_to_leaf_with_cost(root, s):
    path = DoublyLinkedList()

    sub = s - root.data

    if(sub == 0 and root.left == None and root.right == None):
        return path

    else:
        if root.right is not None:
            path.add_last("right")
            path.add_last(path_to_leaf_with_cost(root.right, sub))

        if root.left is not None:
            path.add_last("left")
            path.add_last(path_to_leaf_with_cost(root.left, sub))

    return path


s = 24
root = Node(4)
root.left = Node(3)
root.right = Node(5)
root.left.right = Node(10)
root.right.left = Node(1)
root.right.left.left = Node(3)
root.right.left.right = Node(8)
root.right.left.right.left = Node(6)
root.right.right = Node(2)
root.right.right.left = Node(4)

print(path_to_leaf_with_cost(root,s))

Это должно вернуть вправо <-> влево <-> вправо <-> влево в соответствии с двоичным деревом (4 + 5 + 1 + 8 + 6 ) Но он возвращает все повороты, которые были сделаны, чтобы найти путь, включая те, которые не являются частью пути. Я не уверен, как бы я изолировал только эти повороты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...