考研数据结构(每日一题)
题目:设计一个算法,求出指定结点在给定二叉排序树中的层次。
算法思想:
二叉树采用二叉链表存储。
在二叉排序树中,查找一次就下降一层。
查找该结点所用的次数就是该结点在二叉排序树中的层次。
采用二叉排序树非递归查找算法,用n保存查找层次,每查找一次,n就加一,直到找到相应的结点。
完整代码:
int level(BiTree bt,BSTNode *p){
int n = 0; //统计查找次数
BiTree t = bt;
if (bt != NULL)
{
n ++;
while (t -> data != p -> data )
{
if(p -> data < t -> data){
t = t -> lchild; //在左子树中查找
}
else
{
t = t -> rchild; //在右子树中查找
}
n ++; //层次加一
}
}
return n;
}