2017-10-06 11 views
0

これはメインのファイルです:これはクラスBTFunctionあるここで再帰はどのように機能しますか?

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

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)を挿入すると、関数はどのように機能しますか? 私によれば、insert(7)が実装されている場合、現在は両方ともnullではないroot.nextとroot.rightを検索するだけです。だから、何もするべきではありません。

再帰的なプロセスを説明できますか?具体的には、値を追加すると説明できますか?

nがnullではないので、我々は他のブロックに移動:

答えて

0

はここbt.insert(7);が呼び出されたときに何が起こるかです。 n.rightはnullではないので、次のelseブロックに移動します。ここでは、BTinsertionn.leftとし、をルートとします。

レベルが下がり、dataがまだ7であり、nが値10のノードです。

nがnullではないが、7ノードはノード10

return nの右側に追加されるようn.rightが、ヌルであるが呼び出さので、値10とのノードが現在のノードであります値はn.right(7)です。希望は意味をなさない。

関連する問題