编写递归算法,对于二叉树中每一个元素值data
等于x
的节点,删去以它为根的子树,并释放相应的空间。
树的结构以广义表的形式给出。如A(B,)
表示一颗有2
个节点的树。其中根的data
值为A
,其左孩子为叶子节点,data
值为B
,右孩子为空。
输入格式
输入有两行,第一行为以广义表的形式给出的树形结构,长度在区间 [0,30)[0,30) 内,均由大写字母和左右括号组成,每个结点由一个大写字母组成,互不相同。第二行为待删除子树根结点的元素值x
,为一个大写字母。
输出格式
输出有一行,为原树删除子树后的广义表达式。
若找不到该元素,则不做删除操作直接输出广义表达式。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
typedef struct Node{
char data;
struct Node *lchild, *rchild;
}Node;
Node *init_node(char val){
Node *p = (Node *)malloc(sizeof(Node));
p->data = val;
p->lchild = p->rchild