1.二叉树的创建及遍历
【问题描述】
给出一个按照先序遍历得出的字符串,’#’ 代表空的子节点,大写字母代表节点内容。请通过这个字符串建立二叉树,并采用非递归的先序、中序、后序遍历的算法分别输出每一个非空节点。
【输入形式】
输入只有一行,包含一个字符串S,用来建立二叉树。保证S为合法的二叉树先序遍历字符串,节点内容只有大写字母,且S的长度不超过100。
【输出形式】
共有三行,每一行包含一串字符,表示分别按非递归的先序、中序、后序遍历得出的节点内容,每个字母后输出一个空格。请注意行尾输出换行。
【样例输入】
ABC##DE#G##F###
【样例输出】
A B C D E G F
C B E G D F A
C G E F D B A
#include <bits/stdc++.h>
using namespace std;
typedef struct node
{
char data;
struct node *lc,*rc;
}*tree,tnode;
stack<tree> s;
void creat(tree *bt)
{
char ch;
ch=getchar();
if(ch=='#')
*bt=0;
else if(ch<='Z'&&ch>='A')
{
*bt=(tree)malloc(sizeof(tnode));
(*bt)->data=ch;
creat(&((*bt)->lc));
creat(&((*bt)->rc));
}
else
cout<<"error\n";
}
/*
void pre(tree bt)
{
if(bt!=0)
{
cout<<bt->data<<' ';
pre(bt->lc);
pre(bt->rc);
}
}*/
void