非递归方法。。求老师指点

来源: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回答

liuyubobobo

2018-10-06

有问题。


回忆一下,其实和链表的非递归添加操作类似。在链表的非递归添加操作中,我们要真正把一个节点添加到链表中,需要找到待添加位置的前一个节点,在pre->next = new Node,才能成功那新的节点添加进链表。


在二分搜索树中同理,我们必须找到待添加节点的父亲节点,才能成功完成这个添加。你现在的添加方式,让node = new Node,但node只是方法的局部变量,new出来的Node并没有挂接在原来的二分搜索树上。


再试试看?可以像课程中一样,对自己的代码,自己设计测试用例进行测试。也可以自己逐步调试跟踪,更深刻的理解这样写的问题在哪里:)


加油!:)

0
1
一只大满满
非常感谢!
2018-10-06
共1条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程