结构推理 试编写一算法,求指定结点在给定的二叉排序树中所在的层数。
【正确答案】(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层。