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.
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
L’Esempio 1 è un albero binario completo poiché l’ultimo livello è riempito da sinistra
L’Esempio 2 è un albero binario completo poiché l’ultimo livello è riempito da sinistra
L’Esempio 3 non è un albero binario completo perché non è riempito in modo corretto a partire da sinistra
L’Esempio 4 non è un albero binario completo perché non è riempito in modo corretto a partire da sinistra