2017-10-06 83 views
0

這是主要的文件:遞歸在這裏如何工作?

public static void main(String[] args) { 
BTFunction bt=new BTFunction(); 
bt.insert(5); 
bt.insert(15); 
bt.insert(10);   
bt.insert(7); 
}  

這是類BTFunction:

public class BTFunction { 
BTNode root=null; 

void insert(int data){ 
root=BTinsertion(data,root); 

} 

BTNode BTinsertion(int data,BTNode n){ 
    if(n==null){ 
     n=new BTNode(data); 
    } 
    else{ 
      if(n.right==null) 
      n.right=BTinsertion(data,n.right); 
      else 
      n.left=BTinsertion(data,n.left); 
     } 
    return n; 
    } 

我明白的前3個插入(即根,左,右),但是當新值(即7)被插入,函數如何工作。 根據我插入(7)時執行,它應該只是搜索root.next和root.right現在都不是空。所以,它不應該做任何事情。

您能否解釋遞歸過程,特別是在添加更多值時。

回答

0

這裏的時候bt.insert(7);叫什麼情況:

n不爲空,所以我們移動到else塊。 n.right不爲空,所以我們移動到下一個else塊。這裏我們稱BTinsertionn.left的根

運行BTinsertion降低水平,data仍然是7,n是我們的節點與值10

n不爲空,但n.right空,所以7節點將被添加到10

return n被稱爲節點的右側,所以我們用價值10節點現在是一個與節點根值和n.right(7)的值。希望這是有道理的。