【正确答案】(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)。
【答案解析】