1088 -- 输出二叉树

输出二叉树

Time Limit:1000MS  Memory Limit:65536K
Total Submit:20 Accepted:11

Description

我们知道二叉树的先序序列和中序序列或者是中序和后序能够唯一确定一颗二叉树。现在给一颗二叉树的先序序列和中序序列,要求输出它的后序序列。

Input

多组测试数据,每组测试数据格式如下:
第一行为先序序列
第二行为中序序列

Output

输出该二叉树的后序序列。

Sample Input

ABFCDGHEI
BFAGDHCIE

Sample Output

FBGHDIECA

Source

### 二叉树遍历的C语言实现 以下是基于给定引用内容以及专业知识所提供的二叉树遍历(、中和后)的C语言实现代码。 #### 节点定义 为了构建二叉树,首需要定义一个表示节点的数据结构。这里采用指针的方式指向左右子树[^1]: ```c typedef struct TreeNode { int data; struct TreeNode* left; struct TreeNode* right; } TreeNode; ``` #### 创建新节点函数 创建一个新的二叉树节点时,分配内存并初始化其值及其左右子树指针为`NULL`[^2]: ```c TreeNode* createNode(int value) { TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode)); newNode->data = value; newNode->left = NULL; newNode->right = NULL; return newNode; } ``` #### 遍历(DLR) 按照访问顺:根节点 -> 左子树 -> 右子树来实现递归版本的遍历[^3]: ```c void preOrderTraversal(TreeNode* root) { if (root != NULL) { printf("%d ", root->data); // 输出当前节点数据 preOrderTraversal(root->left); // 遍历左子树 preOrderTraversal(root->right); // 遍历右子树 } } ``` #### 中遍历(LDR) 遵循左子树 -> 根节点 -> 右子树的顺完成递归形式的中遍历: ```c void inOrderTraversal(TreeNode* root) { if (root != NULL) { inOrderTraversal(root->left); // 遍历左子树 printf("%d ", root->data); // 输出当前节点数据 inOrderTraversal(root->right); // 遍历右子树 } } ``` #### 后遍历(LRD) 依据左子树 -> 右子树 -> 根节点这一序列执行递归方式下的后遍历: ```c void postOrderTraversal(TreeNode* root) { if (root != NULL) { postOrderTraversal(root->left); // 遍历左子树 postOrderTraversal(root->right); // 遍历右子树 printf("%d ", root->data); // 输出当前节点数据 } } ``` 以上即为完整的二叉树三种基本遍历方法——、中与后遍历的C语言实现代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值