首先,理解什么是递归,递归呢,就是不断调用方法本身自己,直到达到满足停止条件为止,此时停止调用方法,但是,递归的个性还是很仗义的,既然调用了,那么我一定全部执行到底,根据栈的思想,不断地沿着入栈的顺序(先入后出),重复调用的每一次方法,由后到前,把之前调用的方法逐个弹出,注意先入后出。
如树的后序遍历:
public void traversePreorder(TreeNodeInt node){
//先遍历左节点
//先定义左子树递归停止条件
if(node.left==null){
return ;
}else{
traversePreorder(node.left);
}
//然后遍历右节点
//定义右字树递归停止条件如下
if(node.right==null){
return ;
}else{
traversePreorder(node.right);
}
//左边字树遍历完,最后执行遍历中间的操作
System.out.println(node.value);
stack.push(node.value);
}
从理解递归和运用递归还是有一段距离的,不容易。