二叉树的遍历实验报告C语言,二叉树的建立与遍历实验报告(c语言编写-附源代码)...
时间: 2024-02-24 20:00:39 浏览: 89
二叉树实验报告 C语言
3星 · 编辑精心推荐
很高兴回答您的问题,以下是二叉树的遍历实验报告。
一、实验目的
1. 掌握二叉树的定义和基本操作;
2. 掌握二叉树的遍历方法,包括前序遍历、中序遍历、后序遍历和层次遍历;
3. 熟悉C语言语法和基本数据结构。
二、实验内容
1. 建立二叉树:根据输入序列建立一棵二叉树;
2. 遍历二叉树:分别实现二叉树的前序遍历、中序遍历、后序遍历和层次遍历;
3. 打印结果:输出每种遍历方式的结果。
三、实验原理
1. 二叉树的定义:二叉树是一种树形结构,其中每个节点最多有两个子节点,分别称为左子节点和右子节点;
2. 二叉树的遍历方法:
- 前序遍历:先访问根节点,再访问左子树,最后访问右子树;
- 中序遍历:先访问左子树,再访问根节点,最后访问右子树;
- 后序遍历:先访问左子树,再访问右子树,最后访问根节点;
- 层次遍历:从上到下、从左到右逐层访问每个节点。
四、实验步骤
1. 定义二叉树节点结构体:包括节点值、左子节点指针和右子节点指针;
2. 定义二叉树建立函数:根据输入序列递归建立二叉树;
3. 定义二叉树遍历函数:分别实现前序遍历、中序遍历、后序遍历和层次遍历;
4. 在主函数中调用建立函数和遍历函数,并输出结果。
五、源代码
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构体
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 建立二叉树函数
TreeNode* buildTree() {
int val;
scanf("%d", &val);
if (val == -1) {
return NULL;
}
TreeNode *root = (TreeNode*)malloc(sizeof(TreeNode));
root->val = val;
root->left = buildTree();
root->right = buildTree();
return root;
}
// 前序遍历函数
void preorderTraversal(TreeNode* root) {
if (root) {
printf("%d ", root->val);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
}
// 中序遍历函数
void inorderTraversal(TreeNode* root) {
if (root) {
inorderTraversal(root->left);
printf("%d ", root->val);
inorderTraversal(root->right);
}
}
// 后序遍历函数
void postorderTraversal(TreeNode* root) {
if (root) {
postorderTraversal(root->left);
postorderTraversal(root->right);
printf("%d ", root->val);
}
}
// 层次遍历函数
void levelorderTraversal(TreeNode* root) {
if (!root) {
return;
}
TreeNode* queue[1000];
int front = 0, rear = 0;
queue[rear++] = root;
while (front < rear) {
TreeNode* node = queue[front++];
printf("%d ", node->val);
if (node->left) {
queue[rear++] = node->left;
}
if (node->right) {
queue[rear++] = node->right;
}
}
}
// 主函数
int main() {
TreeNode *root = buildTree();
printf("前序遍历结果:");
preorderTraversal(root);
printf("\n中序遍历结果:");
inorderTraversal(root);
printf("\n后序遍历结果:");
postorderTraversal(root);
printf("\n层次遍历结果:");
levelorderTraversal(root);
printf("\n");
return 0;
}
```
六、实验结果
输入序列:1 2 -1 -1 3 -1 4 -1 -1
输出结果:
前序遍历结果:1 2 3 4
中序遍历结果:2 1 3 4
后序遍历结果:2 4 3 1
层次遍历结果:1 2 3 4
阅读全文