#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <cmath>
using namespace std;
struct Node{
char data;
Node *lchild, *rchild;
};
void create(Node *&rt)
{
char data;
scanf("%c", &data);
if(data == '#'){
rt = NULL;
}
else {
rt = (Node *)malloc(sizeof(Node));
rt->data = data;
create(rt->lchild);
create(rt->rchild);
}
return;
}
void Order1(Node *rt)
{
if(rt != NULL){
if(rt->data != '#')
printf("%c ", rt->data);
Order1(rt->lchild);
Order1(rt->rchild);
}
}
void Order2(Node *rt)
{
if(rt != NULL){
Order2(rt->lchild);
if(rt->data != '#')
printf("%c ", rt->data);
Order2(rt->rchild);
}
}
void Order3(Node *rt)
{
if(rt != NULL){
Order3(rt->lchild);
Order3(rt->rchild);
if(rt->data != '#')
printf("%c ", rt->data);
}
}
int main()
{
Node *bt;
printf("输入序列:");
create(bt);
printf("先序遍历:");
Order1(bt);
putchar(10);
printf("中序遍历:");
Order2(bt);
putchar(10);
printf("后序遍历:");
Order3(bt);
putchar(10);
return 0;
}
二叉树的遍历
最新推荐文章于 2023-07-12 17:34:57 发布