c语言数据结构二叉树的建立与遍历
时间: 2024-11-15 17:25:55 浏览: 8
在C语言中,二叉树是一种常见的数据结构,它由节点组成,每个节点最多有两个子节点,通常称为左子节点和右子节点。构建和遍历二叉树的基本步骤如下:
**建立二叉树**:
1. **创建节点**: 定义一个结构体表示二叉树的节点,包含一个值、指向左右子节点的指针(通常是`struct Node* left`, `struct Node* right`)。
```c
typedef struct Node {
int data;
struct Node* left;
struct Node* right;
} Node;
```
2. **插入操作**: 根据给定值通过递归的方式将节点添加到树中,通常是比较当前值与目标位置的值并选择合适的位置。
```c
void insert(Node** root, int val) {
if (*root == NULL) {
*root = (Node*)malloc(sizeof(Node));
(*root)->data = val;
(*root)->left = NULL;
(*root)->right = NULL;
} else if (val < (*root)->data) {
insert(&(*root)->left, val);
} else {
insert(&(*root)->right, val);
}
}
```
3. **构建示例**: 创建一个空的根节点,并逐个插入元素。
**遍历二叉树**:
1. **前序遍历**: 先访问根节点,然后递归地遍历左子树,最后遍历右子树。
```c
void preorderTraversal(Node* root) {
if (root != NULL) {
printf("%d ", root->data);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
}
```
2. **中序遍历**: 先递归遍历左子树,然后访问根节点,最后遍历右子树。
```c
void inorderTraversal(Node* root) {
if (root != NULL) {
inorderTraversal(root->left);
printf("%d ", root->data);
inorderTraversal(root->right);
}
}
```
3. **后序遍历**: 先递归遍历左子树和右子树,最后访问根节点。
```c
void postorderTraversal(Node* root) {
if (root != NULL) {
postorderTraversal(root->left);
postorderTraversal(root->right);
printf("%d ", root->data);
}
}
阅读全文