#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义二叉树节点结构体
typedef struct TreeNode {
char data;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
int currentIndex = 0;
TreeNode* buildTree(char *preorder) {
if (preorder[currentIndex] == '#') {
// 遇到 '#' 表示空节点,索引后移并返回 NULL
currentIndex++;
return NULL;
}
// 创建新节点
TreeNode *node = (TreeNode*)malloc(sizeof(TreeNode));
node->data = preorder[currentIndex++];
// 递归构建左子树
node->left = buildTree(preorder);
// 递归构建右子树
node->right = buildTree(preorder);
return node;
}
// 中序遍历二叉树
void inorderTraversal(TreeNode *root) {
if (root == NULL) {
return;
}
// 遍历左子树
inorderTraversal(root->left);
// 访问当前节点
printf("%c ", root->data);
// 遍历右子树
inorderTraversal(root->right);
}
int main() {
char a[100];
scanf("%s", a);
TreeNode *root = buildTree(a);
inorderTraversal(root);
return 0;
}