形象理解二叉树中,计算二叉树的深度中的递归思想。

从求二叉树的深度的递归函数中,使用debug调试更深刻的理解程序的运行过程。
int BTNodeDepth(BTNode *b) //求二叉树b的深度
{
int lchilddep = 0 ,rchilddep = 0;
if (b==NULL)
return(0); //空树的高度为0
else
{
lchilddep = BTNodeDepth(b->lchild); //求左子树的高度为lchildde
rchilddep = BTNodeDepth(b->rchild); //求右子树的高度为rchilddep
return (lchilddep>rchilddep)? (lchilddep+1):(rchilddep+1);
}
}

形象理解二叉树中,计算二叉树的深度中的递归思想。
例如这里使用完函数后再return时,会将return 中的值赋值给lchilddep或lchilddep。
在debug中看到的现象时会回到这个函数(debug箭头指向这个函数,执行的是赋值操作)
在去执行下一个函数。 这里 = 号是得到上一个return里的值。

递归函数变量赋初值问题,为什么不加static?,每次int lchilddep = 0 ,rchilddep = 0;都是新的变量(相当于调用新的函数)创建新的空间这里的被赋值的地方都是上一个return返回的,所以不加。

二这里递归都是反哺上去的值。

对递归有了图表化的认识,想象成二叉树排布的房间,只有一个返回则想象成每一层都只有一个节点的树,两个以上则想象成多叉树。