大三今日总结..

读入用户输入的一串字符串,将字符串按照先序遍历建立一个二叉树。 其中“#”表示的是空链,代表空树。再对建立好的二叉树进行中序遍历,输出遍历结果。

include <stdio.h>

include <stdlib.h>

// 定义二叉树节点结构体
typedef struct TreeNode {
char val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;

// 创建新节点的函数
TreeNode* createNode(char val) {
TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
if (newNode == NULL) {
printf("内存分配失败!\n");
return NULL;
}
newNode->val = val;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}

// 先序遍历构建二叉树的函数
TreeNode* buildTreePreorder(char* preorder, int* index) {
if (preorder[index] == '#') {
(
index)++;
return NULL;
}
TreeNode* root = createNode(preorder[(*index)++]);
root->left = buildTreePreorder(preorder, index);
root->right = buildTreePreorder(preorder, index);
return root;
}

// 中序遍历二叉树的函数
void inorderTraversal(TreeNode* root) {
if (root) {
inorderTraversal(root->left);
printf("%c ", root->val);
inorderTraversal(root->right);
}
}

int main() {
char preorder[100];
scanf("%s", preorder);

int index = 0;
TreeNode* root = buildTreePreorder(preorder, &index);

inorderTraversal(root);

return 0;

}

posted @ 2026-01-09 13:55  C(5,3)  阅读(2)  评论(0)    收藏  举报