1.统计二叉树中度为0,1,2 结点的个数
int num0=0;
int num1=1;
int num2=2;
int NodeNumber(BiTree T)
{
if(T)
{
if(T->lchild==NULL&&T->rchild==NULL)
num0++;
if((T->lchild==NULL&&T->rchild!=NULL)||(T->lchild!=NULL&&T->rchild==NULL))
num1++;
if(T->lchild!=NULL&&T->rchild!=NULL)
num2++;
}
}
2.统计二叉树的高度、宽度
int Height(BiTree T)
{
if(T==NULL)
return 0;
else if(T->lchild==NULL&&T->rchild==NULL)
return 1;
else
{
int hl,hr;
hl=Height(T-lchild);
hr=Height(T-rchild);
if(hl>hr)
return hl+1;
else
return hr+1;
}
}
void Width(BiTree T,int Width[],int level)
{
if(T)
{
Width[level]++;
Width(T->lchild,Width,level+1);
Width(T->rchild,Width,level+1);
}
}
int MaxWidth(BiTree T)
{
if(T==NULL)
return 0;
else
{
int Width[MaxSize]=0;
int maxwidth=0;
Width(T,Width,0);
for(int i=0; Width[i]!=0; i++)
{
if(Width[i]>maxwidth)
maxwidth=Width[i];
}
return maxwidth;
}
}
3.删除二叉树的所有叶子结点
4.计算结点 *p 所在层次
5.计算二叉树各结点的最大、最小元素的值
6.交换二叉树中每个结点的两个子女
void Exchange(BiTree T)
{
if(T->lchild != NULL)
Exchange(T->lchild);
if(T->rchild != NULL)
Exchange(T->rlchild);
BiTNode *p;
p=T->lchild;
T->lchild=T->rchild;
}
7.先序输出二叉树中所有结点的数值及所层次