写一个遍历二叉树的c语言程序
时间: 2024-04-29 15:23:39 浏览: 92
二叉树的遍历程序(C语言版)
以下是一个基于递归的遍历二叉树的C语言程序:
```c
// 定义二叉树结点
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
// 前序遍历
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); // 最后访问根结点
}
```
以上程序中,我们定义了一个结构体 `TreeNode` 表示二叉树结点,包括其值 `val` 和两个指针 `left` 和 `right` 分别指向左子树和右子树。我们通过递归实现了三种遍历方式:前序遍历、中序遍历和后序遍历。
在遍历过程中,我们先判断当前结点是否为空,如果为空则直接返回;否则按照遍历顺序依次访问左子树、右子树和根结点。在访问根结点时,我们可以输出结点值或者将其存入一个数组中,以达到遍历的目的。
阅读全文