一、递归实现
int Max(int a,int b)//a,b中的最大值
{
return a>b?a:b;
}
int GetHeight(struct BTree *T)//求二叉树高度
{
if(!T) return 0;//递归出口
return Max(GetHeight(T->left),GetHeight(T->right))+1;//递归求出左子树和右子树的高度
}
二、非递归实现(层序遍历)
int GetHeightByQueue(struct BTree *T)//非递归实现
{
struct BTree *queue[1000],*s;//构建队列
int f=0,r=0;
int last=1,level=0;
queue[r++]=T;//根节点入队
while(f!=r)
{
s=queue[f++];
if(s->left!=NULL) queue[r++]=s->left;
if(s->right!=NULL) queue[r++]=s->right;
if(f==last)
{
++level;
last=r;
}
}
return level;
}