Задача 3: Среднее значение уровней в двоичном дереве

Напишите определение функции average_of_levels(root), которая принимает корень бинарного дерева root и возвращает массив, где каждый элемент — это среднее значение узлов на соответствующем уровне дерева.

Для представления дерева используется объект класса TreeNode, определённый следующим образом:

class TreeNode(object):
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

! Этот объект скрытно заготовлен заранее в вашем коде.

Узел дерева TreeNode имеет три свойства:

  • val — значение узла (целое число);
  • left — ссылка на левое поддерево;
  • right — ссылка на правое поддерево.

В задаче дерево передаётся в виде объекта TreeNode. Ваша задача — рассчитать средние значения на каждом уровне дерева и вернуть их в виде массива. Результаты с точностью до 10^-5 считаются верными.


Примеры

Пример 1:

Ввод:
root = [3,9,20,null,null,15,7]
(Дерево представлено в виде схемы):

        3
       / \
      9  20
         / \
        15  7

Вызов:

average_of_levels(TreeNode(3, TreeNode(9), TreeNode(20, TreeNode(15), TreeNode(7))))

Вывод:
[3.00000, 14.50000, 11.00000]

Объяснение:

  • Уровень 0: Среднее значение 3.
  • Уровень 1: Среднее значение (9 + 20) / 2 = 14.5.
  • Уровень 2: Среднее значение (15 + 7) / 2 = 11.

Пример 2:

Ввод:
root = [3,9,20,15,7]
(Дерево представлено в виде схемы):

        3
       / \
      9  20
     / \
    15  7

Вызов:

average_of_levels(TreeNode(3, TreeNode(9, TreeNode(15), TreeNode(7)), TreeNode(20)))

Вывод:
[3.00000, 14.50000, 11.00000]

Объяснение:

  • Уровень 0: Среднее значение 3.
  • Уровень 1: Среднее значение (9 + 20) / 2 = 14.5.
  • Уровень 2: Среднее значение (15 + 7) / 2 = 11.

0

Вы должны Войти или Зарегистрироваться чтобы оставлять комментарии