用C语言建立二叉树;分别对其进行先序、中序、后序遍历,遍历过程中输出结点的值。
时间: 2023-06-04 08:04:35 浏览: 76
对所建立的二叉树分别进行先序、中序和后序遍历,并输出结果。
4星 · 用户满意度95%
好的,这个问题属于计算机科学领域,我可以为您回答。下面是用C语言建立二叉树,并分别对其进行先序、中序、后序遍历的代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构体
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
// 创建二叉树
struct TreeNode* createTree() {
int val;
printf("请输入节点的值(-1表示该节点为空):");
scanf("%d", &val);
if (val == -1) {
return NULL;
} else {
struct TreeNode* node = (struct TreeNode*) malloc(sizeof(struct TreeNode));
node->val = val;
node->left = createTree();
node->right = createTree();
return node;
}
}
// 先序遍历
void preorderTraversal(struct TreeNode* root) {
if (root == NULL) {
return;
}
printf("%d ", root->val);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
// 中序遍历
void inorderTraversal(struct TreeNode* root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left);
printf("%d ", root->val);
inorderTraversal(root->right);
}
// 后序遍历
void postorderTraversal(struct TreeNode* root) {
if (root == NULL) {
return;
}
postorderTraversal(root->left);
postorderTraversal(root->right);
printf("%d ", root->val);
}
// 主函数
int main() {
struct TreeNode* root = createTree();
printf("先序遍历结果:");
preorderTraversal(root);
printf("\n");
printf("中序遍历结果:");
inorderTraversal(root);
printf("\n");
printf("后序遍历结果:");
postorderTraversal(root);
printf("\n");
return 0;
}
```
运行结果:
```
请输入节点的值(-1表示该节点为空):1
请输入节点的值(-1表示该节点为空):2
请输入节点的值(-1表示该节点为空):-1
请输入节点的值(-1表示该节点为空):-1
请输入节点的值(-1表示该节点为空):3
请输入节点的值(-1表示该节点为空):-1
请输入节点的值(-1表示该节点为空):-1
先序遍历结果:1 2 3
中序遍历结果:2 1 3
后序遍历结果:2 3 1
```
阅读全文