7-1 二叉树遍历应用

 

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

输入格式:

输入1行字符串,长度小于等于100。

输出格式:

输出中序遍历的结果,每个字符后面有一个空格。

输入样例:

在这里给出一组输入。例如:

abc##de#g##f###
 
结尾无空行

输出样例:

在这里给出相应的输出。例如:

c b e g d f a 
 
结尾无空行
作者
liudan
单位
石家庄铁道大学
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
 
 
C++ (g++)
 
 
 
 
 
 
 
 
 
 
 
1
 
#include<iostream>
2
#include<cstdio>
3
using namespace std;
4
 
typedef struct node{
5
    char ch;
6
    node* lc,*rc;
7
}node,*Node;
8
string s;
9
 
Node build(Node p,int& k){
10
 
    if(s[k]=='#'){
11
        k++;
12
        return NULL;
13
    }
14
    p=new node();
15
    p->ch=s[k++];
16
    p->lc=build(p->lc,k);
17
    p->rc=build(p->rc,k);
18
    return p;
19
}
20
 
void show(Node p){
21
    if(p==NULL) return;
22
    show(p->lc);
23
    cout<<p->ch<<' ';
24
    show(p->rc);
25
}
26
 
int main(){
27
    cin>>s;
28
    Node p=NULL;
29

30
    int k=0;
31
    p=build(p,k);
32

33
    show(p);
34

35
    return 0;
36
}
 
 
posted @ 2021-11-22 22:41  清梦韶华  阅读(49)  评论(0编辑  收藏  举报