1.求树高度
int Depth(CSTree& T)
{
int d1,d2;
if(T)
{
d1=1+Depth(T->firstchild);
d2=Depth(T->nextsibling);
return d1>d2?d1:d2;
}
else return 0;
}
2.求叶子结点数
//叶子结点数:
int LeafNum(CSTree& T)
{
if(T)
{
if(T->firstchild==NULL)
return 1+LeafNum(T->nextsibling);
if(T->firstchild!=NULL)
return LeafNum(T->firstchild)+LeafNum(T->nextsibling);
}
else
{
return 0;
}
}
3.求树的度
int DegreeNum(CSTree& T)
{
int d,dl,dr;
if(T)
{
if(!T->firstchild)
return d=0;
else
d=1+RSiblingNum(T->firstchild);
dl=DegreeNum(T->firstchild);
dr=DegreeNum(T->nextsibling);
return Max(d,dl,dr); // 三数中求最大者
}
else
return 0;
}
// 返回当前结点的兄弟数
int RSiblingNum(CSTree& T)
{
int i=0;
while(T->nextsibling){
i++;
T=T->nextsibling;
}
return i;
}