#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)
{
6.45 编写递归算法:对于二叉树中每一个元素值为x的结点,删去以它为跟的子树,并释放相应的空间
最新推荐文章于 2022-12-01 21:25:09 发布