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

  

posted @ 2021-12-08 23:02  好(justice)……  阅读(155)  评论(0编辑  收藏  举报