求指定结点在给定二叉树中的层次
思想:采用二叉排序树非递归算法,每向下一层,层次+1。
代码:
int getNodeLevel (BiTree T,BiTree *p){
//空树则层次为0,不为空则根结点在第一层
int count=(T==NULL?0:1);
//树不为空,而且还没找到给定结点时
while(T!=NULL&&T->data!=p->data){
//找的结点比当前结点大,则在右子树
if(T->data<p->data){
T=T->rchild;
}else{
//找的结点比当前结点小,则在左子树
T=T->lchild;
}
count++;
}
return T==NULL ? 0:count;
}