用64位devC++实现以下功能,建立一棵含有n个结点的二叉树,采用二叉链表存储; ⑵ 输出前序、中序、后序遍历该二叉树的遍历结果
时间: 2023-12-03 09:45:14 浏览: 101
以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
char data;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 创建二叉树
TreeNode* createBinaryTree() {
char c;
scanf("%c", &c);
if (c == '#') {
return NULL;
}
TreeNode *node = (TreeNode*)malloc(sizeof(TreeNode));
node->data = c;
node->left = createBinaryTree();
node->right = createBinaryTree();
return node;
}
// 前序遍历
void preOrder(TreeNode *node) {
if (node == NULL) {
return;
}
printf("%c ", node->data);
preOrder(node->left);
preOrder(node->right);
}
// 中序遍历
void inOrder(TreeNode *node) {
if (node == NULL) {
return;
}
inOrder(node->left);
printf("%c ", node->data);
inOrder(node->right);
}
// 后序遍历
void postOrder(TreeNode *node) {
if (node == NULL) {
return;
}
postOrder(node->left);
postOrder(node->right);
printf("%c ", node->data);
}
int main() {
printf("请输入二叉树的前序遍历序列(#表示空节点):\n");
TreeNode *root = createBinaryTree();
printf("前序遍历结果:");
preOrder(root);
printf("\n中序遍历结果:");
inOrder(root);
printf("\n后序遍历结果:");
postOrder(root);
printf("\n");
return 0;
}
```
使用方法:
1. 打开Dev-C++,新建一个控制台应用程序。
2. 将以上代码复制到编辑器中。
3. 点击菜单栏的“执行”->“编译&执行”。
4. 输入二叉树的前序遍历序列,例如:AB#C##D##
5. 程序会输出前序遍历、中序遍历和后序遍历的结果。
阅读全文