int BTreeDepth(BTreeNode * BT)
//求由BT指针指向的一棵二叉树的深度
{
if(BT==NULL)
return 0; //对于空树,返回0并结束递归。
else
{
//计算左子树的深度
int dep1=BTreeDepth(BT->left); (*)
//计算右子树的深度
int dep2=BTreeDepth(BT->right); (**)
//返回树的深度
if(dep1>dep2) (***)
return dep1+1;
else dep2+1;
}
}
我的疑问:在运行到(*)式的时候,递归,重新进入程序,直到左子树为空,然后往下运行,运行到(**)式时是一样的过程,那么如何记下dep1,dep2的值呢?或者说是在哪里dep1,dep2的值发生变化的呢?
额,函数的递归调用你都看不懂,去看什么二叉树呀。还不如老老实实地学习c++的递归,如汉诺塔