2017-10-06 87 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)的值。希望这是有道理的。