用C语言创建一个二叉树并用三种方法遍历
时间: 2023-11-06 12:04:24 浏览: 175
创建二叉树并使用三种方法进行遍历的C语言代码如下:
```c
#include <stdio.h>
#include <.h>
// 二叉树节点结构
struct Node {
int data;
struct Node* left;
struct Node* right;
};
// 创建新节点
struct Node* createNode(int data) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 将节点插入二叉树
struct Node* insertNode(struct Node* root, int data) {
if (root == NULL) {
root = createNode(data);
} else if (data <= root->data) {
root->left = insertNode(root->left, data);
} else {
root->right = insertNode(root->right, data);
}
return root;
}
// 先序遍历二叉树(根-左-右)
void preorderTraversal(struct Node* root) {
if (root == NULL) {
return;
}
printf("%d ", root->data);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
// 中序遍历二叉树(左-根-右)
void inorderTraversal(struct Node* root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left);
printf("%d ", root->data);
inorderTraversal(root->right);
}
// 后序遍历二叉树(左-右-根)
void postorderTraversal(struct Node* root) {
if (root == NULL) {
return;
}
postorderTraversal(root->left);
postorderTraversal(root->right);
printf("%d ", root->data);
}
int main() {
struct Node* root = NULL;
root = insertNode(root, 5);
root = insertNode(root, 3);
root = insertNode(root, 7);
root = insertNode(root, 1);
root = insertNode(root, 4);
root = insertNode(root, 6);
root = insertNode(root, 8);
printf("先序遍历结果:");
preorderTraversal(root);
printf("\n");
printf("中序遍历结果:");
inorderTraversal(root);
printf("\n");
printf("后序遍历结果:");
postorderTraversal(root);
printf("\n");
return 0;
}
```
这段代码首先定义了二叉树节点的结构体,包含数据、左子节点和右子节点。然后通过 `createNode` 函数创建新节点,`insertNode` 函数将节点插入二叉树中。接下来,实现了三种遍历方法:先序遍历、中序遍历和后序遍历。最后在 `main` 函数中创建了一个二叉树,并对其进行了三种遍历操作,并输出结果。
阅读全文