题目描述:计算给定元素X的结点在二叉树中的层次号。
<1>递归
int FindLevel(BiTree T,ElemType x,int level){
if(T == NULL)
return 0;
if(T->data == x)
return level;
int left = FindLevel(T->lchild,x,level + 1);
if(left != 0)
return left;
else
return FindLevel(T->rchild,x,level + 1);
}
<2>非递归
int FindLevel(BiTree T,ElemType x){
BiTree Q[MaxSize];
int front = -1,rear = -1;
int last = 0,high = 0;
BiTNode *p;
Q.[++rear] = T;
while(front < rear){
p = Q[++front];
if(p ->data == x)
return high;
if(p->lchild)
Q.[++rear] = p->lchild;
if(p->rchild)
Q.[++rear] = p->rchild;
if(last == front){
high++;
last = rear;
}
}
return 0;
}