用c++编写程序,完成二义树的先序创建、先序遍历、中序遍历、后序遍历等操作
时间: 2023-12-04 09:05:16 浏览: 48
以下是用C语言实现二叉树的代码,包括先序创建、先序遍历、中序遍历、后序遍历等操作:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
char data;
struct node* lchild;
struct node* rchild;
}Node, *Tree;
/* 先序创建二叉树 */
Tree createTree() {
char ch;
scanf("%c", &ch);
if(ch == '#') {
return NULL;
} else {
Tree root = (Tree)malloc(sizeof(Node));
root->data = ch;
root->lchild = createTree();
root->rchild = createTree();
return root;
}
}
/* 先序遍历 */
void preOrder(Tree root) {
if(root == NULL) {
return;
} else {
printf("%c ", root->data);
preOrder(root->lchild);
preOrder(root->rchild);
}
}
/* 中序遍历 */
void inOrder(Tree root) {
if(root == NULL) {
return;
} else {
inOrder(root->lchild);
printf("%c ", root->data);
inOrder(root->rchild);
}
}
/* 后序遍历 */
void postOrder(Tree root) {
if(root == NULL) {
return;
} else {
postOrder(root->lchild);
postOrder(root->rchild);
printf("%c ", root->data);
}
}
int main() {
printf("请输入二叉树的先序序列,'#'表示空节点:\n");
Tree root = createTree();
printf("先序遍历的结果为:");
preOrder(root);
printf("\n中序遍历的结果为:");
inOrder(root);
printf("\n后序遍历的结果为:");
postOrder(root);
return 0;
}
```
这里用 # 表示空节点,输入样例如下:
```
请输入二叉树的先序序列,'#'表示空节点:
A
B
#
#
C
D
#
#
E
#
#
先序遍历的结果为:A B C D E
中序遍历的结果为:B A D C E
后序遍历的结果为:B D E C A
```
阅读全文