B3642 二叉树的遍历c++代码
时间: 2023-10-03 20:03:52 浏览: 222
二叉树的遍历可以分为三种方式:前序遍历、中序遍历和后序遍历。以下是使用C语言实现这三种遍历方式的代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树结点的定义
typedef struct TreeNode {
int data;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 前序遍历
void preorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
printf("%d ", root->data); // 输出当前结点的值
preorderTraversal(root->left); // 递归遍历左子树
preorderTraversal(root->right); // 递归遍历右子树
}
// 中序遍历
void inorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left); // 递归遍历左子树
printf("%d ", root->data); // 输出当前结点的值
inorderTraversal(root->right); // 递归遍历右子树
}
// 后序遍历
void postorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
postorderTraversal(root->left); // 递归遍历左子树
postorderTraversal(root->right); // 递归遍历右子树
printf("%d ", root->data); // 输出当前结点的值
}
int main() {
// 创建一个二叉树示例
TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode));
root->data = 1;
TreeNode* node2 = (TreeNode*)malloc(sizeof(TreeNode));
node2->data = 2;
TreeNode* node3 = (TreeNode*)malloc(sizeof(TreeNode));
node3->data = 3;
TreeNode* node4 = (TreeNode*)malloc(sizeof(TreeNode));
node4->data = 4;
TreeNode* node5 = (TreeNode*)malloc(sizeof(TreeNode));
node5->data = 5;
root->left = node2;
root->right = node3;
node2->left = node4;
node2->right = node5;
node3->left = NULL;
node3->right = NULL;
node4->left = NULL;
node4->right = NULL;
node5->left = NULL;
node5->right = NULL;
printf("前序遍历结果:");
preorderTraversal(root);
printf("\n");
printf("中序遍历结果:");
inorderTraversal(root);
printf("\n");
printf("后序遍历结果:");
postorderTraversal(root);
printf("\n");
// 释放内存
free(node5);
free(node4);
free(node3);
free(node2);
free(root);
return 0;
}
```
阅读全文