创建二叉树,前序遍历二叉树,中序遍历二叉树,后序遍历二叉树的c语言源文件与头文件
时间: 2024-11-19 18:15:18 浏览: 2
二叉树的遍历中序非递归,先序后序递归
在C语言中,创建二叉树、前序、中序和后序遍历通常涉及到结构体定义节点、递归函数以及主函数的编写。这里提供一个简化的例子,包括二叉树的基本结构和遍历函数。
首先,我们创建一个名为`binary_tree.h`的头文件:
```cpp
// binary_tree.h
#ifndef BINARY_TREE_H
#define BINARY_TREE_H
#include <stdio.h>
// 定义二叉树节点结构
typedef struct TreeNode {
int val; // 节点值
struct TreeNode *left; // 左子节点指针
struct TreeNode *right; // 右子节点指针
} TreeNode;
// 创建新节点的函数
TreeNode* createNode(int value);
// 前序遍历函数
void preOrderTraversal(TreeNode* root);
// 中序遍历函数
void inOrderTraversal(TreeNode* root);
// 后序遍历函数
void postOrderTraversal(TreeNode* root);
#endif // BINARY_TREE_H
```
接下来,我们创建`binary_tree.c`的源文件:
```cpp
// binary_tree.c
#include "binary_tree.h"
// 创建新节点的函数
TreeNode* createNode(int value) {
TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
if (newNode != NULL) {
newNode->val = value;
newNode->left = newNode->right = NULL;
}
return newNode;
}
// 前序遍历函数
void preOrderTraversal(TreeNode* root) {
if (root != NULL) {
printf("%d ", root->val);
preOrderTraversal(root->left);
preOrderTraversal(root->right);
}
}
// 中序遍历函数
void inOrderTraversal(TreeNode* root) {
if (root != NULL) {
inOrderTraversal(root->left);
printf("%d ", root->val);
inOrderTraversal(root->right);
}
}
// 后序遍历函数
void postOrderTraversal(TreeNode* root) {
if (root != NULL) {
postOrderTraversal(root->left);
postOrderTraversal(root->right);
printf("%d ", root->val);
}
}
```
在主程序中,你可以像这样使用这些函数:
```cpp
int main() {
// 初始化树并调用遍历函数
TreeNode* root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
// ...继续添加更多节点...
printf("前序遍历: ");
preOrderTraversal(root);
printf("\n");
printf("中序遍历: ");
inOrderTraversal(root);
printf("\n");
printf("后序遍历: ");
postOrderTraversal(root);
printf("\n");
return 0;
}
```
这只是一个基础的示例,实际应用中可能需要处理更复杂的情况,比如用户输入创建树、删除节点等操作。现在你已经得到了前序、中序和后序遍历的基础框架。
阅读全文