Задано бинарное дерево с n вершинами, в котором хранятся целые числа. Разработайте эффективный алгоритм, определяющий минимальную глубину листа и количество листьев на этой глубине. Глубина вершины v — это длина пути от корня до вершины v.
(a) Напишите свое решение в виде функции на Python, используйте определение класса для вершины двоичного дерева ниже и, пожалуйста, прокомментируйте свой код,
(b) обосновать точность,
(c) получить временную сложность (в худшем случае).
class VrcholBinStromu: """класс для представления вершины бинарного дерева""" def __init__(self, info = None, levy = None, pravy = None): self.info = info # data self.levy = levy # levé dítě self.pravy = pravy # pravé dítě
def minHloubkaListu(koren : VrcholBinStromu) -> (int,int): """ корень : корень указанного бинарного дерева возвращает: минимальная глубина листа и количество листов минимальной глубины """
(a) Напишите свое решение в виде функции на Python, используйте определение класса для вершины двоичного дерева ниже и, пожалуйста, прокомментируйте свой код,
(b) обосновать точность,
(c) получить временную сложность (в худшем случае).
class VrcholBinStromu:
"""класс для представления вершины бинарного дерева"""
def __init__(self, info = None, levy = None, pravy = None):
self.info = info # data
self.levy = levy # levé dítě
self.pravy = pravy # pravé dítě
def minHloubkaListu(koren : VrcholBinStromu) -> (int,int):
"""
корень : корень указанного бинарного дерева
возвращает: минимальная глубина листа и количество листов минимальной глубины
"""