c 语言二叉树的遍历代码
时间: 2023-07-28 09:41:12 浏览: 171
二叉树的遍历 c语言
以下是 C 语言二叉树的遍历代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树结构体
struct Node {
int value;
struct Node *left;
struct Node *right;
};
// 创建新节点
struct Node* createNode(int value) {
struct Node* node = (struct Node*)malloc(sizeof(struct Node));
node->value = value;
node->left = NULL;
node->right = NULL;
return node;
}
// 前序遍历
void preorderTraversal(struct Node* node) {
if (node == NULL) {
return;
}
printf("%d ", node->value); // 输出节点值
preorderTraversal(node->left); // 递归遍历左子树
preorderTraversal(node->right); // 递归遍历右子树
}
// 中序遍历
void inorderTraversal(struct Node* node) {
if (node == NULL) {
return;
}
inorderTraversal(node->left); // 递归遍历左子树
printf("%d ", node->value); // 输出节点值
inorderTraversal(node->right); // 递归遍历右子树
}
// 后序遍历
void postorderTraversal(struct Node* node) {
if (node == NULL) {
return;
}
postorderTraversal(node->left); // 递归遍历左子树
postorderTraversal(node->right); // 递归遍历右子树
printf("%d ", node->value); // 输出节点值
}
int main() {
struct Node* root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
root->left->left = createNode(4);
root->left->right = createNode(5);
printf("前序遍历:");
preorderTraversal(root);
printf("\n");
printf("中序遍历:");
inorderTraversal(root);
printf("\n");
printf("后序遍历:");
postorderTraversal(root);
printf("\n");
return 0;
}
```
这个示例程序中,我们定义了一个 `Node` 结构体,表示二叉树节点。每个节点包含一个整数值 `value`,以及指向左右子节点的指针 `left` 和 `right`。我们还定义了创建新节点的 `createNode` 函数,以及三种遍历方式的函数:`preorderTraversal`、`inorderTraversal` 和 `postorderTraversal`。在 `main` 函数中,我们创建了一个二叉树,并对其进行了三种遍历。
阅读全文