#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; }