Является ли двоичное дерево полным?

Вам нужно определить, является ли данное двоичное дерево полным.
Двоичное дерево считается полным, если все его уровни полностью заполнены, за исключением нижнего, при этом узлы на нижнем уровне располагаются как можно левее.
Оба дерева, представленные ниже, являются примерами полных двоичных деревьев.
notion image
notion image

Ввод

Во входных данных даются целые числа, разделенные пробелами, которые соответствуют значениям узлов двоичного дерева. Порядок значений задан так, как было описано в предыдущем пункте (каждый раз для обхода сначала берется левое поддерево, а затем правое). Значение 0 означает, что узел не существует. Гарантируется, что входное двоичное дерево корректно.

Вывод

Программа должна вывести Yes, если двоичное дерево является полным, и No — в противном случае.

Примеры

Input
Output
1 2 3 4 5 8 9 0 0 0 0 0 0 6 7 0 0 0 0
Yes
1 2 3 4 5 8 0 0 0 0 0 6 7 0 0 0 0
Yes
1 2 3 4 5 0 0 0 0 6 7 0 0 8 9 0 0 0 0
No
1 2 3 4 5 0 0 7 8 0 0 0 0 0 6 0 0
No

Пояснение

  1. Пример 1 — это полное двоичное дерево, так как последний уровень заполнен слева.
    1. notion image
  1. Пример 2 — это полное двоичное дерево, так как последний уровень заполнен слева.
    1. notion image
  1. Пример 3 не является полным двоичным деревом, так как оно не заполнено максимально слева.
    1. notion image
  1. Пример 4 не является полным двоичным деревом, так как оно не заполнено максимально слева.
    1. notion image
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue