用c语言实现满二叉树的遍历
时间: 2023-10-24 18:05:55 浏览: 30
满二叉树是一种特殊的二叉树,每个结点的度都为2,且所有叶子结点都在同一层上。满二叉树的遍历方式包括前序遍历、中序遍历和后序遍历。下面是用C语言实现满二叉树的遍历的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结点
struct TreeNode {
int data;
struct TreeNode* left;
struct TreeNode* right;
};
// 创建新结点
struct TreeNode* create_node(int data) {
struct TreeNode* node = (struct TreeNode*)malloc(sizeof(struct TreeNode));
node->data = data;
node->left = NULL;
node->right = NULL;
return node;
}
// 前序遍历
void preorder_traversal(struct TreeNode* root) {
if (root != NULL) {
printf("%d ", root->data); // 输出结点数据
preorder_traversal(root->left); // 递归遍历左子树
preorder_traversal(root->right); // 递归遍历右子树
}
}
// 中序遍历
void inorder_traversal(struct TreeNode* root) {
if (root != NULL) {
inorder_traversal(root->left); // 递归遍历左子树
printf("%d ", root->data); // 输出结点数据
inorder_traversal(root->right); // 递归遍历右子树
}
}
// 后序遍历
void postorder_traversal(struct TreeNode* root) {
if (root != NULL) {
postorder_traversal(root->left); // 递归遍历左子树
postorder_traversal(root->right); // 递归遍历右子树
printf("%d ", root->data); // 输出结点数据
}
}
int main() {
// 创建满二叉树
struct TreeNode* root = create_node(1);
root->left = create_node(2);
root->right = create_node(3);
root->left->left = create_node(4);
root->left->right = create_node(5);
root->right->left = create_node(6);
root->right->right = create_node(7);
printf("前序遍历:");
preorder_traversal(root);
printf("\n");
printf("中序遍历:");
inorder_traversal(root);
printf("\n");
printf("后序遍历:");
postorder_traversal(root);
printf("\n");
return 0;
}
```
输出结果为:
```
前序遍历:1 2 4 5 3 6 7
中序遍历:4 2 5 1 6 3 7
后序遍历:4 5 2 6 7 3 1
```