Задачи
March 27, 2023
Задача. Полное бинарное дерево
Дан корень бинарного дерева. Необходимо определить, является ли оно полным бинарным деревом?!
Справка: Полное бинарное дерево — это бинарное дерево, в котором все уровни, кроме, возможно, последнего, полностью заполнены, а все узлы последнего уровня максимально левые.
Разбор
По сути, будем использовать определение полного бинарного дерева. Сделаем обход бинарного дерева по уровням (pre-order traversal) и если мы встретим пропущенный узел, после которого есть заполненные, то такое дерево будет неполным.
Для обхода дерева воспользуемся очередью:
- В 1-м цикле мы последовательно запишем все ненулевые узлы, поочередно обходя каждый уровень.
- Во 2-м цикле мы проверим все ли оставшиеся узлы в очереди являются нулевыми. В полном дереве это будут нулевые дочерние узлы последнего уровня. В этом цикле каждый элемент мы удалим из очереди.
- Если очередь оказалась пустой, то дерево полное.