//求叶子结点数
int leaves(BiTree T){
if(!T)return 0;
if(T->lchild==NULL&&T->rchild==NULL)return 1;
return leaves(T->lchild)+leaves(T->rchild);
}
//求树的高度
int height(BiTree T){
if(!T)return 0;
int lh=height(T->lchild);
int rh=height(T->rchild);
return (lh>rh?lh:rh)+1;
}
//求度为2结点的个数
int degree2(BiTree T){
if(!T)return 0;
if(T->lchild!=NULL&&T->rchild!=NULL)
return degree2(T->lchild)+degree2(T->rchild)+1;
else
return degree2(T->lchild)+degree2(T->rchild);
}
//打印结点x的所有祖先
int ancestor(BiTree T,int x){
if(!T)return 0;
if(T->data==x)return 1;
if(ancestor(T->lchild,x)||ancestor(T->rchild,x)){
visit(T);
return 1;
}else
return 0;
}