二叉树的先序,中序,后序遍历c语言
时间: 2024-01-30 19:00:21 浏览: 103
在C语言中,可以使用指针和递归函数来实现二叉树的先序、中序和后序遍历。
首先,我们需要定义一个二叉树的结构体,包含一个数据域和左右子树指针域:
```c
typedef struct TreeNode {
int data;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
```
接下来,我们可以分别实现先序、中序和后序遍历的函数。
(1)先序遍历:
先序遍历是按照根节点、左子树、右子树的顺序进行遍历。
```c
void preorderTraversal(TreeNode* root) {
if (root == NULL) return;
printf("%d ", root->data); // 先访问根节点
preorderTraversal(root->left); // 遍历左子树
preorderTraversal(root->right); // 遍历右子树
}
```
(2)中序遍历:
中序遍历是按照左子树、根节点、右子树的顺序进行遍历。
```c
void inorderTraversal(TreeNode* root) {
if (root == NULL) return;
inorderTraversal(root->left); // 遍历左子树
printf("%d ", root->data); // 访问根节点
inorderTraversal(root->right); // 遍历右子树
}
```
(3)后序遍历:
后序遍历是按照左子树、右子树、根节点的顺序进行遍历。
```c
void postorderTraversal(TreeNode* root) {
if (root == NULL) return;
postorderTraversal(root->left); // 遍历左子树
postorderTraversal(root->right); // 遍历右子树
printf("%d ", root->data); // 访问根节点
}
```
以上就是用C语言实现二叉树先序、中序和后序遍历的方法。这些遍历方法都是基于递归的,通过递归调用实现对二叉树的深度优先搜索。
阅读全文