一、递归实现
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;}