6.45 编写递归算法:对于二叉树中每一个元素值为x的结点,删去以它为跟的子树,并释放相应的空间

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>

typedef struct BTNode {
    int data;
    struct BTNode *left, *right;
}BTNode;

BTNode *creat_bt(){ //按扩展前序建二叉树;
    BTNode *t;int x;
    scanf("%d",&x);
    if (x==0) t=NULL;
    else 
    { t=(BTNode *)malloc(sizeof(BTNode));
        t->data=x;
        t->left=creat_bt();
        t->right=creat_bt();
    }
    return t;
}


//编写递归算法:对于二叉树中每一个元素值为x的结点,删去以它为根的子树,并释放相应空间
//先按先序查找到这个值的父结点,若元素值为x的结点为其父结点的左孩子,则另指针p指向左孩子,
//同时将左指针置空;右孩子同理


BTNode *del(BTNode *bt)        //删除以x为根的子树
{
    if(bt!=NULL)
    {
        del(bt->left);
        del(bt->right);
        free(bt);
    }
    return NULL;
}

BTNode *find_del_x(BTNode *bt, int x)
{   BTNode *p=NULL;
    if (bt != NULL)
    {
         if(bt->left != NULL && bt->left->data == x)
        {
            
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值