编写递归算法,对于二叉树中每一个元素值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 = NULL;
return p;
}
void clear_node(Node *node){
if (node == NULL) return;
clear_node(node->l

这篇博客介绍了如何使用递归算法删除二叉树中所有值等于给定值的节点及其子树,同时提供了输入输出格式的说明。
449

被折叠的 条评论
为什么被折叠?



