#define M 10 //假设二叉树最多的层数
BinTree SearchBTree(BinTree *T,DataType x)
{//以前序遍历算法查找值为x的结点
if(*T)
{
if((*T)->data==x )return *T;
SearchBTree(&(*T)->lchild,x);
SearchBTree(&(*T)->rchild,x);
}
}
int InLevel(BinTree T,DataType x)
{
int static l=0;//设一静态变量保存层数
if(T)
{
if(l==0)//若是访问根结点
{
l++;//第1层
if(T->data==x)return l;
if(T->lchild||T->rchild)
l++;//若根有子树,则层数加1
}
else
{ //访问子树结点
if(T->data==x)return l;
if(T->lchild||T->rchild)
l++;//若该结点有子树,则层数加1
else return 0;
}
InLevel(T->lchild,x);//遍历左子树
InLevel(T->rchild,x);//遍历右子树
}
}
温馨提示:答案为网友推荐,仅供参考