使用c语言建立一棵二叉树,并对其进行遍历(先序、中序、后序),打印输出遍历结果。
时间: 2023-11-27 14:04:44 浏览: 132
建二叉树并分别用先先序、中序和后序遍历,然后输出各遍历序列
5星 · 资源好评率100%
好的,以下是使用 C 语言建立一棵二叉树,并对其进行遍历的示代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树的节点结构体
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 创建二叉树节点
TreeNode* createTreeNode(int val) {
TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
// 插入节点到二叉树中
void insertNode(TreeNode* root, TreeNode* node) {
if (root == NULL) {
return;
}
if (node->val < root->val) {
if (root->left == NULL) {
root->left = node;
} else {
insertNode(root->left, node);
}
} else {
if (root->right == NULL) {
root->right = node;
} else {
insertNode(root->right, node);
}
}
}
// 先序遍历二叉树
void preOrder(TreeNode* root) {
if (root == NULL) {
return;
}
printf("%d ", root->val);
preOrder(root->left);
preOrder(root->right);
}
// 中序遍历二叉树
void inOrder(TreeNode* root) {
if (root == NULL) {
return;
}
inOrder(root->left);
printf("%d ", root->val);
inOrder(root->right);
}
// 后序遍历二叉树
void postOrder(TreeNode* root) {
if (root == NULL) {
return;
}
postOrder(root->left);
postOrder(root->right);
printf("%d ", root->val);
}
int main() {
// 创建二叉树节点
TreeNode* root = createTreeNode(5);
TreeNode* node1 = createTreeNode(3);
TreeNode* node2 = createTreeNode(7);
TreeNode* node3 = createTreeNode(2);
TreeNode* node4 = createTreeNode(4);
TreeNode* node5 = createTreeNode(6);
TreeNode* node6 = createTreeNode(8);
// 插入节点到二叉树中
insertNode(root, node1);
insertNode(root, node2);
insertNode(root, node3);
insertNode(root, node4);
insertNode(root, node5);
insertNode(root, node6);
// 遍历并输出二叉树的结果
printf("Pre-order: ");
preOrder(root);
printf("\n");
printf("In-order: ");
inOrder(root);
printf("\n");
printf("Post-order: ");
postOrder(root);
printf("\n");
return 0;
}
```
在上述代码中,我们首先定义了一个二叉树的节点结构体 `TreeNode`,包含了节点的值、左子节点和右子节点。然后我们定义了创建节点和插入节点的函数,用于创建二叉树和插入节点到二叉树中。
接下来,我们实现了三种遍历方式(先序、中序、后序),并在 `main` 函数中使用这三种方式对二叉树进行遍历,并输出遍历的结果。
阅读全文