12.21

发布时间 2024-01-07 15:07:53作者: 羡予

二叉树遍历应用

读入用户输入的一串字符串,将字符串按照先序遍历建立一个二叉树。 其中“#”表示的是空链,代表空树。再对建立好的二叉树进行中序遍历,输出遍历结果。

输入格式:

输入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;
}