C语言二叉树创建,遍历
时间: 2023-12-12 17:03:44 浏览: 70
C语言二叉树的创建与遍历
二叉树是一种非常常见的数据结构,C语言可以通过结构体来实现二叉树的创建和遍历。下面是一个二叉树的结构体定义:
```c
typedef struct TreeNode {
int data;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
```
其中,`data`表示节点存储的数据,`left`和`right`分别表示左子树和右子树。
接下来,我们分别介绍二叉树的创建和遍历。
## 二叉树的创建
二叉树的创建可以通过递归的方式实现。具体步骤如下:
1. 如果当前节点为`NULL`,则新建一个节点,并为其赋值。
2. 如果当前节点不为`NULL`,则比较当前节点的值与新节点的值的大小关系,如果新节点的值小于当前节点的值,则将新节点插入到当前节点的左子树中,否则将新节点插入到当前节点的右子树中。
3. 递归处理左子树和右子树。
代码实现如下:
```c
void insert(TreeNode **root, int data) {
if (*root == NULL) {
*root = (TreeNode *) malloc(sizeof(TreeNode));
(*root)->data = data;
(*root)->left = NULL;
(*root)->right = NULL;
} else if (data < (*root)->data) {
insert(&((*root)->left), data);
} else {
insert(&((*root)->right), data);
}
}
```
其中,`root`是一个指向二叉树根节点的指针,`data`是要插入的节点的值。
## 二叉树的遍历
二叉树的遍历分为三种方式:前序遍历、中序遍历和后序遍历。下面分别介绍这三种遍历方式的实现。
### 前序遍历
前序遍历的顺序是:根节点 -> 左子树 -> 右子树。代码实现如下:
```c
void preorder(TreeNode *root) {
if (root != NULL) {
printf("%d ", root->data);
preorder(root->left);
preorder(root->right);
}
}
```
其中,`root`是当前要遍历的节点。
### 中序遍历
中序遍历的顺序是:左子树 -> 根节点 -> 右子树。代码实现如下:
```c
void inorder(TreeNode *root) {
if (root != NULL) {
inorder(root->left);
printf("%d ", root->data);
inorder(root->right);
}
}
```
其中,`root`是当前要遍历的节点。
### 后序遍历
后序遍历的顺序是:左子树 -> 右子树 -> 根节点。代码实现如下:
```c
void postorder(TreeNode *root) {
if (root != NULL) {
postorder(root->left);
postorder(root->right);
printf("%d ", root->data);
}
}
```
其中,`root`是当前要遍历的节点。
以上就是C语言实现二叉树的创建和遍历的方法。
阅读全文