帮我写一个程序,用C语言写,实现的功能包括1.创建二叉树的二叉链表 2. 实现二叉树的3种遍历递归算法并分别打印,注意输入的数据类型为字符,顺便把运行结果示例给我看看
时间: 2023-12-03 21:44:40 浏览: 83
二叉树的创建与遍历C语言实现代码.zip
好的,以下是程序代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
char data;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 创建二叉树的二叉链表
TreeNode* createBinaryTree() {
char ch;
TreeNode *root;
scanf("%c", &ch);
if (ch == '#') {
root = NULL;
} else {
root = (TreeNode*)malloc(sizeof(TreeNode));
root->data = ch;
root->left = createBinaryTree();
root->right = createBinaryTree();
}
return root;
}
// 前序遍历递归算法
void preOrderTraversal(TreeNode *root) {
if (root != NULL) {
printf("%c ", root->data);
preOrderTraversal(root->left);
preOrderTraversal(root->right);
}
}
// 中序遍历递归算法
void inOrderTraversal(TreeNode *root) {
if (root != NULL) {
inOrderTraversal(root->left);
printf("%c ", root->data);
inOrderTraversal(root->right);
}
}
// 后序遍历递归算法
void postOrderTraversal(TreeNode *root) {
if (root != NULL) {
postOrderTraversal(root->left);
postOrderTraversal(root->right);
printf("%c ", root->data);
}
}
int main() {
printf("请输入二叉树的先序遍历序列(#表示空节点):\n");
TreeNode *root = createBinaryTree();
printf("\n");
printf("前序遍历结果为:");
preOrderTraversal(root);
printf("\n");
printf("中序遍历结果为:");
inOrderTraversal(root);
printf("\n");
printf("后序遍历结果为:");
postOrderTraversal(root);
printf("\n");
return 0;
}
```
以下是程序运行结果示例:
输入:
```
请输入二叉树的先序遍历序列(#表示空节点):
ABD###CE##F###
```
输出:
```
前序遍历结果为:A B D C E F
中序遍历结果为:D B A E C F
后序遍历结果为:D B E F C A
```
阅读全文