用c语言写出二叉树的创建以及遍历
时间: 2024-12-18 13:33:59 浏览: 18
在C语言中,我们可以使用结构体和指针来实现二叉树的创建和遍历。首先,我们定义一个二叉树结点的结构:
```c
typedef struct TreeNode {
int data; // 节点值
struct TreeNode* left; // 左孩子指针
struct TreeNode* right; // 右孩子指针
} TreeNode;
```
接下来,我们创建二叉树的基本操作通常包括插入节点、删除节点等。这里只展示如何创建一个空树和插入节点的简单例子:
```c
// 创建一个新的二叉树节点
TreeNode* createNode(int value) {
TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
if (newNode != NULL) {
newNode->data = value;
newNode->left = newNode->right = NULL;
}
return newNode;
}
// 向二叉树中插入节点
void insertNode(TreeNode** root, int value) {
if (*root == NULL) {
*root = createNode(value);
} else if (value < (*root)->data) {
insertNode(&((*root)->left), value);
} else {
insertNode(&((*root)->right), value);
}
}
```
至于遍历二叉树,主要有三种基本方式:前序遍历(根-左-右)、中序遍历(左-根-右)和后序遍历(左-右-根)。以下是简单的递归版本示例:
```c
// 前序遍历
void preOrderTraversal(TreeNode* node) {
if (node != NULL) {
printf("%d ", node->data); // 输出节点值
preOrderTraversal(node->left);
preOrderTraversal(node->right);
}
}
// 中序遍历
void inOrderTraversal(TreeNode* node) {
if (node != NULL) {
inOrderTraversal(node->left);
printf("%d ", node->data);
inOrderTraversal(node->right);
}
}
// 后序遍历
void postOrderTraversal(TreeNode* node) {
if (node != NULL) {
postOrderTraversal(node->left);
postOrderTraversal(node->right);
printf("%d ", node->data);
}
}
```
阅读全文