1,递归求二叉树宽度,
int Height(BiTree T)
{
if(T==NULL)
return 0;
else if(T->left==NULL && T->right==NULL)
return 1;
else
{
int left,right;
left=Height(T->left);
right=Height(T->right);
if(left>right)
return left+1;
else
return right+1;
}
}
二叉树宽度
int MaxWidth(BiTree T )
{
if(T==NULL)
return 0;
else
{
int W[MaxSize]=0;
int MaxW=0;
Width(T,W,0);
for(int i=0;W[i]!=0;i++)
if(W[i]>MaxW)
MaxW=W[i];
return MaxW;
}
}
void Width(BiTree T,int W[],int level)
{
if(T)
{
W[level]++;
Width(T->left,W,level+1);
Width(T->right,W,level+1);
}
}
int count[100];
int MAX=-1;
void FindWidth(BitNode T,int k)
{
if(T==NULL) return;
count[k]++;
if(MAX<count[k]) MAX=count[k];
FindWidth(T->lchild,k+1);
FindWidth(T->rchild,k+1);
}
求二叉树任意两个结点的最近公共祖先