import java.util.*;

public class Arbre{

    private Noeud racine = null;
    private int nbNoeud = 0;
    
    public Arbre(int[] tableau){
        for (int valeur : tableau){
            this.add(valeur);
        }
    }

    public void add(int valeur){
        this.nbNoeud ++;
        if (racine == null){
            this.racine = new Noeud(valeur);
        }
        else{
            Queue<Noeud> parcours = new LinkedList<>();
            Noeud noeudActuel;
            parcours.offer(this.racine);
            do{
                noeudActuel = parcours.poll();
            } while(noeudActuel.add(valeur, parcours) == false);
        }
    }

    public int[] toArray(){
        if (racine == null){
            return new int[0];
        }

        int[] resultat = new int[this.nbNoeud];
        Queue<Noeud> parcours = new LinkedList<>();
        int i;

        parcours.offer(this.racine);

        for (i=0; i<this.nbNoeud; i++){
            Noeud noeud = parcours.poll();
            int valeur;
            if (noeud == null){
                valeur = -1;
            }
            else{
                valeur = noeud.getValeur(parcours);
            }
            resultat[i] = valeur;
        }

        return resultat;

    }
}