https://blog.csdn.net/sinat_27088253/article/details/51954398
递归bai=传递+回归,即任务的下放du和结果的回收。
这个需要自己慢慢体会zhi,其实所dao有递归算法实质上都是一样的,理解了就万变不离其宗了。
create(node
*root)
{
root=new
node;
写上关于root的信息//初始化root节点
if(root满足自定义的条件)//自定义一个递归的条件,即传递和回归的界限,这是必须的。
{
create(root->lchild);//建左子树
create(root->rchild);//建右子树
}
}
总体上来看,建一颗树,每一次调用creat()都是只创建一个节点,
把剩下的任务下放给create(root->lchild)和create(root->rchild)
而这两个也会重复第一个create(root)的做法,
实质体现的是任务的不断下放,当达到最后的回归的界限的,结果又将不断回收,对应的是函数的不断返回,实质是退栈的过程。
这个过程其实经历了一个不断进栈和不断出栈的过程,对应的是任务的不断下放和不断提交
最后栈空,即告全部任务完成!
当递归调用时每次调用自己时可以看做是压栈过程,当递归条件满足结束时,递归一级一级的返回时可以看做是出