5-3 非递归写法
来源:5-3 二分搜索树的节点插入
慕运维2948618
2022-04-06
void insert(Key key, Value value){
if(root==null){
root = new Node(key, value);
count++;
return;
}
Node* current = root;
while(true){
if(key > current->key){
if(current->right == null){
current->right = new Node(key, value);
count++;
return;
}
else
current = current->right;
}else if(key < current->key){
if(current->left == null){
current->left = new Node(key, value);
count++;
return;
}
else
current = current->left;
}else{
current->value = value;
return;
}
}
}
首先想到的是非递归写法,老师上课讲的递归写法很神奇,要是我肯定想不出来。
我这样写有问题吗?写得感觉有点啰嗦,老师有什么巧妙的非递归写法吗?
写回答
1回答
-
没有问题。
之所以觉得啰嗦,是因为你看到了递归写法有多“简洁”。而这恰恰就是递归的优点。代码简洁不仅仅意味着代码行数的“少”,更意味着思维上更容易。对于很多问题,尤其是本身依附于有递归结构的问题上,使用递归去思考,本身就是更容易的。
这点你接触的和递归有关的问题越多,体会将越深。一旦你深刻掌握了递归,在很多时候,你应该会更愿意写递归方法才对:)
继续加油!:)
00
相似问题