用递归算法求二叉树的深度

论坛 期权论坛 期权     
玻璃杯liu   2018-4-26 14:05   2613   2
对于下面这个算法,return这个语句可以多次执行吗?不是执行了return函数调用就结束了吗?
int depth(BTree root){
int ldepth,rdepth;
if(!root)
      return 0;
else{
        ldepth = depth(root->lchild);
        rdepth = depth(root->rc...对于下面这个算法,return这个语句可以多次执行吗?不是执行了return函数调用就结束了吗?
int depth(BTree root){
int ldepth,rdepth;
if(!root)
      return 0;
else{
        ldepth = depth(root->lchild);
        rdepth = depth(root->rchild);
        if(ldepth >= rdepth) //取左右子树深度的最大值加一返回
              return ldepth+1;
        else
              return rdepth+1;
}
return 1; //只有根节点
}展开
分享到 :
0 人收藏

2 个回复

倒序浏览
2#
zhaoya188  1级新秀 | 2018-4-30 01:52:35 发帖IP地址来自
return语句仅结束当前的函数调用。如果是循环调用,仅结束当前层次的调用,并返回上一层次。
对于
int depth(BTree root){
...
    if(!root)
        return 0;
    else{
        ...
        if(ldepth >= rdepth)
        return ldepth+1;
        else
              return rdepth+1;
       }
return 1;
}
最后一个“return 1;”不会被执行到的。
3#
RunWithTheWind  2级吧友 | 2018-4-30 01:52:36 发帖IP地址来自
你对递归运行要理解深入下
int fact(int n){
    int result=1;
    if(n=0) return 1;
    else result=n*fact(n-1);

   return result;
}

当求fact(5) 这个阶乘中fact难道只能执行一次么?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP