Рубрики
Без рубрики

Путь сумма

Это часть моей серии, где я замечу, учится у LeetCode. Если у вас есть лучшие решения или идеи, … с меткой Python, LeetCode, новичков, алгоритмов.

Это часть моей серии, где я замечу, учится у LeetCode. Если у вас есть лучшие решения или идеи, пожалуйста, оставьте комментарий!

Проблемы

Путь сумма

Учитывая двоичное дерево и сумму, определите, имеет ли дерево путь к корне-лифу>, чтобы добавление всех значений вдоль пути равняется данной> сумме.

Примечание: лист – это узел без детей.

Пример:

Учитывая приведенное ниже двоичное дерево и,

      5
     / \
    4   8
   /   / \
11  13  4
 /  \        \
7    2        1

Верните True, так как существует путь к корню к листью 5-> 4-> 11-> 2, что сумма> 22.

Мы хотим знать сумму значения маршрута от корня до листа. В приведенном выше примере корень составляет 5, а листья – 13, 7, 2 и 1, поэтому мы должны проверить маршрут 5->8->13 , 5->4->11->7 , 5->4->11->2 и 5-> 8-> 4-> 1 .

Подход

Мы собираемся проверить четыре маршрута от BFS (первый поиск в ширине). В приведенном выше примере порядок BFS составляет [5, 4, 8, 11, 13, 4, 7, 2, 1].

Мы можем получить сумму значения маршрута, добавив значение узла к значению его детей. Это говорит о том, что когда стоимость корня составляет 5, а ценности детей – 4 и 8, мы делаем дети детей 9 и 13, добавляя значение корня и повторяя его, пока ребенок не станет листом.

Решение

from collections import deque
class Solution:
    def hasPathSum(self, root: TreeNode, sum: int) -> bool:
        if root is None:
            return False

        queue = deque([root,])

        while queue:
            node = queue.popleft()
            if node.left is not None:
                node.left.val += node.val
                queue.append(node.left)
            if node.right is not None:
                node.right.val += node.val
                queue.append(node.right)
            if node.right is None and node.left is None and node.val == sum:
                return True
        return False 

Спасибо, что прочитали эту статью! Я всегда приветствую ваши отзывы, вопрос и идею.

Оригинал: “https://dev.to/shoryu/path-sum-4hd9”