这是主要文件:
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。所以,它不应该做任何事情。
您能否解释一下递归过程,特别是在添加更多值时。
答案 0 :(得分:0)
以下是调用bt.insert(7);
时会发生什么:
n
不为空,因此我们转到else块。 n.right
不为空,因此我们移动到下一个else块。在这里,我们将BTinsertion
与n.left
称为根。
向下运行BTinsertion
级别,data
仍为7,n
是我们的值为10
的节点。
n
不为空,但n.right
为空,因此7节点将添加到节点10的右侧。
return n
,因此我们的值为10的节点现在是一个具有根值和n.right
(7)值的节点。希望这是有道理的。