L’albero binario è completo?

Vi viene richiesto di verificare se l’albero binario fornito è completo.

Un albero binario si definisce completo se tutti i livelli sono completamente riempiti, a eccezione del livello più basso, i cui nodi sono riempiti procedendo il più possibile da sinistra.

Entrambi gli alberi mostrati di seguito sono alberi binari completi.

profound.academy-Binary-tree-5.drawio.png
profound.academy-Binary-tree-6.drawio.png

Input

L’input contiene interi separati da spazi che rappresentano i valori dei nodi nell’albero binario. L’ordine dei valori è fornito come descritto nella precedente spiegazione (attraversando ogni volta il sottoalbero sinistro e poi quello destro). Un valore pari a 0 indica che il nodo non esiste. È garantito che l’albero binario in ingresso sia valido.

Output

Il programma deve stampare Yes se l’albero binario è completo, altrimenti No.

Esempi

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

Spiegazione

  1. L’Esempio 1 è un albero binario completo poiché l’ultimo livello è riempito da sinistra

    profound.academy-Binary-tree-5.drawio.png
  1. L’Esempio 2 è un albero binario completo poiché l’ultimo livello è riempito da sinistra

    profound.academy-Binary-tree-6.drawio.png
  1. L’Esempio 3 non è un albero binario completo perché non è riempito in modo corretto a partire da sinistra

    profound.academy-Binary-tree-3.drawio (2).png
  1. L’Esempio 4 non è un albero binario completo perché non è riempito in modo corretto a partire da sinistra

    profound.academy-Binary-tree-4.drawio (3).png

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