Tournage d'un Arbre Binaire à un tableau trié

Est-il un moyen de transformer un Binaire à un tableau trié sans avoir à traverser de l'arbre pour chaque index de tableau?

Node root;
Node runner;
int current_smallest;

void findsmallest(Node root){
    //Pre-order traversal
    if(root == null){
        return;
    }else{
        runner = root;
        if(current_smallest == null){
            current_smallest = runner.element;
        }else{
            if(current_smallest > runner.element){
            current_smallest = runner.element;
            }
        }
        findsmallest(runner.left);
        findsmallest(runner.right);
    }   
}

void fill_array( int [] array ){

    for(int i =0; i < array.length(); i++){
        findsmallest(root);
        array[i] = current_smallest;
    }
} 

Comme vous pouvez le voir, cela peut être prendre un certain temps si il y a beaucoup de nœuds dans l'arbre.
Btw, j'ai oublié de montrer que l'ensemble de l'arbre doivent être parcourus au début pour obtenir la longueur du tableau.

OriginalL'auteur Adegoke A | 2013-04-23