c语言代码 用二叉链表建立二叉树并对其进行遍历并输出结果
时间: 2023-06-20 07:06:07 浏览: 111
下面是用二叉链表建立二叉树并对其进行遍历的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结点结构体
typedef struct TreeNode {
char data;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 创建二叉树
TreeNode* createBinaryTree() {
char data;
scanf("%c", &data);
if (data == '#') {
return NULL;
}
TreeNode *root = (TreeNode*)malloc(sizeof(TreeNode));
root->data = data;
root->left = createBinaryTree();
root->right = createBinaryTree();
return root;
}
// 前序遍历二叉树
void preorderTraversal(TreeNode *root) {
if (root == NULL) {
return;
}
printf("%c ", root->data);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
// 中序遍历二叉树
void inorderTraversal(TreeNode *root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left);
printf("%c ", root->data);
inorderTraversal(root->right);
}
// 后序遍历二叉树
void postorderTraversal(TreeNode *root) {
if (root == NULL) {
return;
}
postorderTraversal(root->left);
postorderTraversal(root->right);
printf("%c ", root->data);
}
int main() {
printf("请输入二叉树的先序遍历序列(以#表示空结点):\n");
TreeNode *root = createBinaryTree();
printf("前序遍历结果:");
preorderTraversal(root);
printf("\n中序遍历结果:");
inorderTraversal(root);
printf("\n后序遍历结果:");
postorderTraversal(root);
printf("\n");
return 0;
}
```
其中,`createBinaryTree()`函数用于创建二叉树,`preorderTraversal()`、`inorderTraversal()`和`postorderTraversal()`函数分别用于实现前序遍历、中序遍历和后序遍历操作。在`main()`函数中,首先通过用户输入创建二叉树,然后对其进行遍历并输出遍历结果。
阅读全文