配列インデックスごとにツリーをトラバースすることなく Binary をソート済み配列に変換する方法はありますか?
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;
}
}
ご覧のとおり、ツリーに多数のノードがある場合、これには長い時間がかかることがあります。ところで、配列の長さを取得するには、最初にツリー全体を走査する必要があることを示すのを忘れていました。