C编程写出二叉树前序遍历和后序遍历的递归算法,并在主函数中调用它,调试好程序并分析其运行结果。
时间: 2023-11-27 15:49:09 浏览: 36
下面是C语言实现二叉树前序遍历和后序遍历的递归算法:
```
#include <stdio.h>
#include <stdlib.h>
// 二叉树的结构体定义
typedef struct TreeNode {
int data; // 数据域
struct TreeNode* left; // 左子节点
struct TreeNode* right; // 右子节点
} TreeNode;
// 创建二叉树
TreeNode* createTree() {
int data;
scanf("%d", &data);
if (data == -1) { // 输入-1表示该节点为空
return NULL;
}
TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
node->data = data;
node->left = createTree();
node->right = createTree();
return node;
}
// 前序遍历
void preOrder(TreeNode* node) {
if (node == NULL) {
return;
}
printf("%d ", node->data);
preOrder(node->left);
preOrder(node->right);
}
// 后序遍历
void postOrder(TreeNode* node) {
if (node == NULL) {
return;
}
postOrder(node->left);
postOrder(node->right);
printf("%d ", node->data);
}
int main() {
TreeNode* root = createTree();
printf("前序遍历:");
preOrder(root);
printf("\n后序遍历:");
postOrder(root);
return 0;
}
```
程序运行结果:
```
输入:
1 2 4 -1 -1 5 -1 -1 3 -1 6 7 -1 -1 -1
输出:
前序遍历:1 2 4 5 3 6 7
后序遍历:4 5 2 7 6 3 1
```
在主函数中,首先调用`createTree()`创建二叉树,然后分别调用`preOrder()`和`postOrder()`进行前序遍历和后序遍历,最后输出结果。程序运行结果与预期一致。