递归如何在这里起作用?

时间:2017-10-06 08:32:40

标签: recursion binary-tree

这是主要文件:

 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次插入(即root,right和left)但是当插入新值(即7)时,该函数如何工作。 根据我实现insert(7)时,它应该只搜索root.next和root.right,它们现在都不为null。所以,它不应该做任何事情。

您能否解释一下递归过程,特别是在添加更多值时。

1 个答案:

答案 0 :(得分: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)值的节点。希望这是有道理的。

相关问题