用c语言完成:先序创建一棵二叉树,并使用三种遍历方法进行遍历,输出遍历序列
时间: 2023-12-03 09:45:46 浏览: 141
下面是使用C语言实现先序创建一棵二叉树,并使用三种遍历方法进行遍历的代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结点结构体
typedef struct TreeNode {
char data; // 数据域
struct TreeNode *left; // 左子树指针
struct TreeNode *right; // 右子树指针
} TreeNode, *TreeNodePtr;
// 先序创建二叉树
void createTree(TreeNodePtr *tree) {
char ch;
scanf("%c", &ch);
if (ch == '#') {
*tree = NULL;
} else {
*tree = (TreeNodePtr) malloc(sizeof(TreeNode));
(*tree)->data = ch;
createTree(&((*tree)->left));
createTree(&((*tree)->right));
}
}
// 先序遍历二叉树
void preOrder(TreeNodePtr tree) {
if (tree != NULL) {
printf("%c ", tree->data);
preOrder(tree->left);
preOrder(tree->right);
}
}
// 中序遍历二叉树
void inOrder(TreeNodePtr tree) {
if (tree != NULL) {
inOrder(tree->left);
printf("%c ", tree->data);
inOrder(tree->right);
}
}
// 后序遍历二叉树
void postOrder(TreeNodePtr tree) {
if (tree != NULL) {
postOrder(tree->left);
postOrder(tree->right);
printf("%c ", tree->data);
}
}
int main() {
TreeNodePtr tree;
printf("请输入先序遍历序列:\n");
createTree(&tree);
printf("先序遍历序列:");
preOrder(tree);
printf("\n中序遍历序列:");
inOrder(tree);
printf("\n后序遍历序列:");
postOrder(tree);
printf("\n");
return 0;
}
```
我们可以通过输入先序遍历序列来创建一棵二叉树,并使用三种遍历方法进行遍历,输出遍历序列。其中,`#` 表示空结点。
阅读全文