【正确答案】(1)数据结构
采用字典的二叉排序树表示。
(2)算法
int search_layer(PBinTree pbtree,PBinTreeNode pnode){
/*返回二叉排序树*pbgee中结点*pnode所在层数,要求所给结点在树中*/
int layer=0:
PBinTreeNode p=*pbtree;
while(p!=NULL){
if(p->key==pnode->key)
return layer; /*查找结点成功,返回层数*/
if(p->key>pnode->key){
p=p->llink; /*进入左子树继续查找*/
layer++;
}
else{
p=p*rlild< /*进入右子树继续查找*/
layer++;
}
}
return-1: /*查找结点失败*/
}
(3)代价分析
假设二叉排序树有n个结点,高度是h(log!n<=h<=n),算法执行的时间代价最坏为O(h)。
【答案解析】根结点为0层。