删除所有叶子结点
void Del_0(BiTree T) //删除叶子结点
{
BiTNode *p = T;
if ((p->lchild == NULL && p->rchild == NULL) || p == NULL)
{
free(p);
return;
}
else if (p->lchild->lchild == NULL && p->lchild->rchlid == NULL)
{
free(p->lchild);
p->lchild = NULL; //父节点左孩子指针置空
}
else if (p->rchild->lchild == NULL && p->rchild->rchlid == NULL)
{
free(p->rchild);
p->rchild = NULL; //父节点右孩子指针置空
}
Del_0(T->lchild);
Del_0(T->rchild);
//注意此代码为递归,只会向内层深入
//所以删除完叶子结点,使原分支结点变为叶子结点,但不会再继续删除
}
王道数据结构第四章归纳总结题