使用c语言实现二叉树的遍历
时间: 2023-10-09 09:05:17 浏览: 83
二叉树的遍历有三种:前序遍历、中序遍历和后序遍历。下面是使用 c 语言实现的三种遍历方式的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构体
struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
};
// 创建二叉树节点
struct TreeNode* createNode(int val) {
struct TreeNode* node = (struct TreeNode*)malloc(sizeof(struct TreeNode));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
// 前序遍历
void preOrderTraversal(struct TreeNode* root) {
if (root == NULL) {
return;
}
printf("%d ", root->val);
preOrderTraversal(root->left);
preOrderTraversal(root->right);
}
// 中序遍历
void inOrderTraversal(struct TreeNode* root) {
if (root == NULL) {
return;
}
inOrderTraversal(root->left);
printf("%d ", root->val);
inOrderTraversal(root->right);
}
// 后序遍历
void postOrderTraversal(struct TreeNode* root) {
if (root == NULL) {
return;
}
postOrderTraversal(root->left);
postOrderTraversal(root->right);
printf("%d ", root->val);
}
int main() {
// 创建二叉树
struct TreeNode* root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
root->left->left = createNode(4);
root->left->right = createNode(5);
root->right->left = createNode(6);
root->right->right = createNode(7);
// 遍历二叉树
printf("前序遍历:");
preOrderTraversal(root);
printf("\n中序遍历:");
inOrderTraversal(root);
printf("\n后序遍历:");
postOrderTraversal(root);
return 0;
}
```
上述代码中,我们首先定义了一个二叉树节点的结构体,然后使用 `createNode` 函数创建二叉树节点。接着实现了前序遍历、中序遍历和后序遍历的函数。最后在 `main` 函数中创建了一棵二叉树,并进行了三种遍历方式的操作。
阅读全文