用c语言编写一个二叉树双序遍历
时间: 2024-09-19 11:17:17 浏览: 50
c语言编写的二叉树深度优先遍历算法
在 C 语言中,我们通常会使用结构体定义二叉树节点,并提供两个递归函数来实现二叉树的前序遍历(根-左-右)和后序遍历(左-右-根)。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点
struct Node {
int data;
struct Node* left;
struct Node* right;
};
// 创建新节点
struct Node* createNode(int value) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
if (!newNode)
return NULL;
newNode->data = value;
newNode->left = newNode->right = NULL;
return newNode;
}
// 双向(前序+后序)遍历函数
void inorderTraversal(struct Node* node, char* order) {
if (node == NULL)
return;
// 前序遍历(根-左-右)
printf("%d ", node->data);
if (*order++ == 'L')
inorderTraversal(node->left, order);
// 后序遍历(左-右-根)
if (*order++ == 'R')
inorderTraversal(node->right, order);
}
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);
char order[] = "LR"; // 前序加后序的顺序标记
inorderTraversal(root, order);
printf("\n");
return 0;
}
```
在这个例子中,我们首先创建了一个二叉树,然后通过 `inorderTraversal` 函数结合前序遍历和后序遍历的顺序(存储在 `order` 字符串中),实现了二叉树的双序遍历。
阅读全文