运行时从键盘输入先序序列,创建对应二叉树,再分别对其进行前、中、后序遍历,输出每个遍历序列。
时间: 2023-06-08 08:08:46 浏览: 74
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
5星 · 资源好评率100%
好的,我可以回答这个问题。以下是实现方法:
首先,我们需要定义一个二叉树的结构体。
```
typedef struct node {
char data;
struct node *left;
struct node *right;
} Node;
```
接下来,我们可以定义一个函数来创建二叉树。该函数将先序序列作为输入,根据先序序列递归地创建二叉树。
```
Node* createBinaryTree(void) {
char ch;
scanf("%c", &ch);
getchar();
if (ch == ' ') {
return NULL;
}
Node *new_node = (Node *)malloc(sizeof(Node));
new_node->data = ch;
new_node->left = createBinaryTree();
new_node->right = createBinaryTree();
return new_node;
}
```
然后,我们可以定义三个函数来分别对二叉树进行前序遍历、中序遍历和后序遍历。
```
void preorderTraversal(Node *root) {
if (root == NULL) {
return;
}
printf("%c ", root->data);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
void inorderTraversal(Node *root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left);
printf("%c ", root->data);
inorderTraversal(root->right);
}
void postorderTraversal(Node *root) {
if (root == NULL) {
return;
}
postorderTraversal(root->left);
postorderTraversal(root->right);
printf("%c ", root->data);
}
```
最后,我们可以在主函数中调用这些函数,实现对二叉树的遍历,并输出每个遍历序列。
```
int main() {
Node *root = createBinaryTree();
printf("preorder: ");
preorderTraversal(root);
printf("\n");
printf("inorder: ");
inorderTraversal(root);
printf("\n");
printf("postorder: ");
postorderTraversal(root);
printf("\n");
return 0;
}
```
希望这个答案能够帮助到你。请注意保密,不要透露任何信息。
阅读全文