二叉树的递归算法到底该怎么理解?

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)的做法,
实质体现的是任务的不断下放,当达到最后的回归的界限的,结果又将不断回收,对应的是函数的不断返回,实质是退栈的过程。
这个过程其实经历了一个不断进栈和不断出栈的过程,对应的是任务的不断下放和不断提交
最后栈空,即告全部任务完成!

当递归调用时每次调用自己时可以看做是压栈过程,当递归条件满足结束时,递归一级一级的返回时可以看做是出栈的过程。

递归可以简单理解为一个大问题分为小问题,然后小问题继续分解,直到能解决,然后几个小问题解决,
就是解决一个大问题,金字塔形状最后解决所有问题,
所以在分解的时候,
你先分解的肯定是后被解决掉,
这个过程就像是压栈的过程,后分解的,最后被分解的,
最先解决,然后一层层解决了,这个就像出栈的过程。所以。。。。

函数调用的本质就是“压栈与出栈操作”,递归不过是它的特例,自身调用自身。

递归进出栈没什么细讲的啊bai,就是du不断压入调用函数进行处理,处理完就返回值并弹zhi出函数,这样直到栈空。这dao里不循环递归的条件是输入值为’#’。先序创建就是先根结点,后左子树,最后有子树,对每个子树都进行如此的创建操作。
二叉树的递归算法到底该怎么理解?