注册 登录
编程论坛 数据结构与算法

求二叉树深度的函数

long361800 发布于 2011-08-07 12:11, 5339 次点击
/**********************树的深度**************************/

int BTNodeDepth(BTNode *b)    /*求二叉树b的深度*/
{
       int lchilddep,rchilddep;
       if (b==NULL)
        return(0);                             /*空树的高度为0*/
       else  
    {   
        lchilddep=BTNodeDepth(b->lchild);    /*求左子树的高度为lchilddep*/
          rchilddep=BTNodeDepth(b->rchild);    /*求右子树的高度为rchilddep*/
        return (lchilddep>rchilddep)? (lchilddep+1):(rchilddep+1);
       }
} //BTNodeDepth

这个函数的递归过程是怎样的啊??   我怎么感觉不到lchilddep值和rchilddep的变化啊??  求讲解一下递归的过程,是怎样求出它的lchilddep值和rchilddep的??
3 回复
#2
世界模型2011-08-08 00:16
程序代码:
int depth(BiTree bt)
{
    int d1,d2;

    if(!bt)
        return 0;
    d1=depth(bt->lchild);
    d2=depth(bt->rchild);

    return (d1>d2?d1:d2)+1;
}
#3
long3618002011-08-08 09:25
回复 2楼 世界模型
我说的是分析递归过程,你那个程序和我的一样
#4
QQ3469571352011-08-10 12:47
递归是很复杂的,不必深究详细过程;但是在用法上有规律可循。这个求二叉树的深度的算法可简单的理解为先求出左子树的深度,再求出右子树的深度,在比较下就行了。
1