结构推理 写一个算法,把二叉树中原来的叶结点全部删除。
【正确答案】(1)数据结构
   采用二叉树的链接表示。
   (2)思路
   先根周游二叉树,删除叶结点即可。
   (3)算法
   void delete_leaves(PBinTree pt){    /*二叉树的叶结点*/
       if((*pt)==NULL)return;    /*空树,返回*/
       if((*pt)->llink==NULL&&(*pt)->rlink==NULL){
                                       /*遇到叶结点,删除*/
         free(*pt);
         (*pt)=NULL;
         return;
       }
       delete_leaves(&((*pt)->llink));    /*删除左子树的叶结点*/
       delete_leaves(&((*pt)->rlink));    /*删除右子树的叶结点*/
   }
   (4)代价分析
   该算法访问每个结点各一次,时间代价为O(n),空间代价为O(h)。
【答案解析】