二叉树的定义:
typedef struct BiTNode
{
int data;
struct BiTNode* lchild, *rchild;
}*BiTree;
1、求二叉树的深度:
// 求二叉树的深度函数
int gettreedepth (BiTree T)
{
if(T=NULL)
{
return 0;
}
else{
int a=gettreedepth(T->lchild);
int b=gettreedepth(T->rchild);
return (a>b)?(a+1):(b+1);
}
}
2、求二叉树的结点的个数:
//求二叉树中节点的个数
int NodeCount (BiTree T)
{
if(T==NULL)
{
return 0;
}
else{
return NodeCount(T->lchild)+NodeCount(T->rchild)+1;
}
}
3、求二叉树叶子结点的个数:
//求二叉树叶子结点的个数
int CF(BiTree T )
{
if(T==NULL)
{
return 0;
}
if(T->lchild==NULL && T->rchild==NULL)
{
return 1;
}
else
{
return CF(T->rchild)+CF(T->lchild);
}
}
4、求二叉树第a层的结点的个数:
//求二叉树第a层的节点个数
int Treepointcount (BiTree T,int a)
{
if(T==NULL ||a<1)
{
return 0;
}
if(a==1)
{
return 1;
}
return Treepointcount (T-> lchild ,a-1) + Treepointcount (T->rchild ,a-1);
}