非递归方法。。求老师指点
来源:5-3 二分搜索树的节点插入
一只大满满
2018-10-06
//练习:用非递归方法插入:
private void insert1(Node node,Key key,Value value){
boolean flag=true;
while(flag){
if(node==null){
count++;
node=new Node(key,value);
flag=false;
}
if(key==node.key){
node.value=value;
flag=false;
}else if(key.compareTo(node.key)<0){
node=node.left;
}else{
node=node.right;
}
}
写回答
1回答
-
有问题。
回忆一下,其实和链表的非递归添加操作类似。在链表的非递归添加操作中,我们要真正把一个节点添加到链表中,需要找到待添加位置的前一个节点,在pre->next = new Node,才能成功那新的节点添加进链表。
在二分搜索树中同理,我们必须找到待添加节点的父亲节点,才能成功完成这个添加。你现在的添加方式,让node = new Node,但node只是方法的局部变量,new出来的Node并没有挂接在原来的二分搜索树上。
再试试看?可以像课程中一样,对自己的代码,自己设计测试用例进行测试。也可以自己逐步调试跟踪,更深刻的理解这样写的问题在哪里:)
加油!:)
012018-10-06
相似问题