我喜欢每次看到要敲代码的时候,都先自己敲一遍,再对照老师的。我发现涉及到递归,我总使用了一种和老师不一样的思路,比如删除最小值节点的递归我这么写的:
public E removeMin() {
return removeMin(root, null);
}
public E removeMin(Node<E> node, Node<E> parent) {
if (node.left == null) {
if (parent == null) {
root = node.right;
}else {
parent.left = node.right;
}
size--;
return node.e;
}
return removeMin(node.left, node);
}
之前的别的递归也是,我似乎总第一反应总是会把递归的中间值当作参数传进去,比如这次的parent。如果是累加的递归,我第一反应会把sum当作参数传到递归里面。我经过了测试,递归方法执行结果是正确的。我可以看懂老师的递归,但每次要写的时候,都写不出来老师那种递归,最后写出一种上面的递归,我现在链表的一些递归操作,都是会把中间值当作递归方法参数传进去。我是哪里思考的方式与老师不同呢?我应该怎么思考,才能写出老师那种递归呢?