从二叉树中删去所有叶结点

删除所有叶子结点

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);
	//注意此代码为递归,只会向内层深入
	//所以删除完叶子结点,使原分支结点变为叶子结点,但不会再继续删除
}

王道数据结构第四章归纳总结题

评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值