7-1 二叉树遍历应用
读入用户输入的一串字符串,将字符串按照先序遍历建立一个二叉树。 其中“#”表示的是空格,代表空树。再对建立好的二叉树进行中序遍历,输出遍历结果。
输入格式:
输入1行字符串,长度小于等于100。
输出格式:
输出中序遍历的结果,每个字符后面有一个空格。
输入样例:
在这里给出一组输入。例如:
abc##de#g##f###
结尾无空行
输出样例:
在这里给出相应的输出。例如:
c b e g d f a
结尾无空行
代码:
#include<iostream> #include<cstdio> using namespace std; typedef struct node{ char ch; node* lc,*rc; }node,*Node; string s; Node build(Node p,int& k){ if(s[k]=='#'){ k++; return NULL; } p=new node(); p->ch=s[k++]; p->lc=build(p->lc,k); p->rc=build(p->rc,k); return p; } void show(Node p){ if(p==NULL) return; show(p->lc); cout<<p->ch<<' '; show(p->rc); } int main(){ cin>>s; Node p=NULL; int k=0; p=build(p,k); show(p); return 0; }