有沒有辦法將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;
}
}
正如您所看到的,如果樹中有很多節點,可能需要很長時間。 順便說一句,我忘了顯示整個樹將不得不遍歷在開始獲得數組的長度。