//递归统计叶子结点
int leaf_count(Tree T)
{
if(T == NULL)
return 0;
if(T->lchild == NULL &&T->rchild == NULL)//叶子结点
return 1;
return leaf_count(T->lchild)+leaf_count(T->rchild);//递归统计左子树叶子结点和右子树叶子节点的个数
}
//递归统计分支结点
int branch_count(Tree T)
{
if(T == NULL)
return 0;
if(T->lchild !=NULL &&T->rchild !=NULL)//双分支结点
return 1;
return branch_count(T->lchild)+branch_count(T->rchild);//递归统计左子树和右子树双分支结点的个数
}
//满二叉树先序转后序
void change(char pre[],int L1,int R1,char post[],int L2,int R2)
{
post[R2] = pre[L1];
change(pre,L1+1,(L1+1+R1)/2,post,L2,(L2+R2-1)/2);//递归处理前半段
change(pre,(L1+1+R1)/2+1,R1,post,(L2+R2-1)/2+1,R2-1);//递归处理后半段
}