用C语言编写二叉树的递归遍历算法,实现:给定一颗二叉树的“扩展先序遍历”,创建这课二叉树
时间: 2023-12-01 07:03:03 浏览: 115
以下是用C语言编写二叉树的递归遍历算法,并实现给定一颗二叉树的“扩展先序遍历”,创建这课二叉树的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结点类型
typedef struct TreeNode {
char data;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode, *TreeNodePtr;
// 创建二叉树
TreeNodePtr createTree() {
char ch;
scanf("%c", &ch);
if (ch == '#') {
return NULL;
}
TreeNodePtr root = (TreeNodePtr)malloc(sizeof(TreeNode));
root->data = ch;
root->left = createTree();
root->right = createTree();
return root;
}
// 先序遍历
void preOrder(TreeNodePtr root) {
if (root) {
printf("%c ", root->data);
preOrder(root->left);
preOrder(root->right);
}
}
// 中序遍历
void inOrder(TreeNodePtr root) {
if (root) {
inOrder(root->left);
printf("%c ", root->data);
inOrder(root->right);
}
}
// 后序遍历
void postOrder(TreeNodePtr root) {
if (root) {
postOrder(root->left);
postOrder(root->right);
printf("%c ", root->data);
}
}
// 主函数
int main() {
printf("请输入扩展先序遍历序列:");
TreeNodePtr root = createTree();
printf("先序遍历结果为:");
preOrder(root);
printf("\n中序遍历结果为:");
inOrder(root);
printf("\n后序遍历结果为:");
postOrder(root);
printf("\n");
return 0;
}
```
例如,输入扩展先序遍历序列为“AB#D##C##”,则程序输出结果为:
```
请输入扩展先序遍历序列:AB#D##C##
先序遍历结果为:A B D C
中序遍历结果为:D B A C
后序遍历结果为:D B C A
```
阅读全文