C语言输出二叉树先序、中序和后序遍历的结果
时间: 2024-11-22 22:46:56 浏览: 8
数据结构实验报告8-树-求二叉树先序、中序、后序遍历次序的第k个访问结点-实验内容与要求.docx
在C语言中,遍历二叉树是一个常见的操作,包括先序遍历(根节点 -> 左子树 -> 右子树)、中序遍历(左子树 -> 根节点 -> 右子树)和后序遍历(左子树 -> 右子树 -> 根节点)。这里以递归的方式介绍如何实现这三种遍历:
1. **先序遍历**:
```c
void preorderTraversal(struct TreeNode* root) {
if (root != NULL) {
printf("%d ", root->val); // 输出当前节点值
preorderTraversal(root->left); // 递归左子树
preorderTraversal(root->right); // 递归右子树
}
}
```
2. **中序遍历**:
```c
void inorderTraversal(struct TreeNode* root) {
if (root != NULL) {
inorderTraversal(root->left); // 递归左子树
printf("%d ", root->val); // 输出当前节点值
inorderTraversal(root->right); // 递归右子树
}
}
```
3. **后序遍历**:
```c
void postorderTraversal(struct TreeNode* root) {
if (root != NULL) {
postorderTraversal(root->left); // 递归左子树
postorderTraversal(root->right); // 递归右子树
printf("%d ", root->val); // 输出当前节点值
}
}
```
在这段代码中,`struct TreeNode`代表二叉树的结点结构,包含`val`表示节点的值,以及指向左右子节点的指针。
阅读全文