利用C语言输入字符序列,建立并输出一棵二叉树,分别按先序,中序,后序遍历输出二叉树
时间: 2024-05-14 19:17:49 浏览: 121
以下是利用C语言实现输入字符序列,建立并输出一棵二叉树,分别按先序,中序,后序遍历输出二叉树的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树结构体
typedef struct TreeNode {
char val; // 节点值
struct TreeNode *left; // 左子树指针
struct TreeNode *right; // 右子树指针
} TreeNode;
// 创建二叉树
TreeNode* createTree() {
char c = getchar();
if (c == '#') { // 如果输入的是 #,表示该节点为空
return NULL;
}
TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode)); // 创建新节点
root->val = c;
root->left = createTree(); // 递归创建左子树
root->right = createTree(); // 递归创建右子树
return root;
}
// 先序遍历
void preorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
printf("%c ", root->val);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
// 中序遍历
void inorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left);
printf("%c ", root->val);
inorderTraversal(root->right);
}
// 后序遍历
void postorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
postorderTraversal(root->left);
postorderTraversal(root->right);
printf("%c ", root->val);
}
int main() {
printf("请输入字符序列(#表示空节点):\n");
TreeNode* root = createTree();
printf("先序遍历结果为:");
preorderTraversal(root);
printf("\n中序遍历结果为:");
inorderTraversal(root);
printf("\n后序遍历结果为:");
postorderTraversal(root);
printf("\n");
return 0;
}
```
输入示例:
```
请输入字符序列(#表示空节点):
AB#C##DE#G##
```
输出示例:
```
先序遍历结果为:A B C D E G
中序遍历结果为:B A C D E G
后序遍历结果为:B C E G D A
```
阅读全文