码迷,mamicode.com
首页 > 其他好文 > 详细

【例3-5】扩展二叉树

时间:2017-12-10 21:38:03      阅读:379      评论:0      收藏:0      [点我收藏+]

标签:tree   main   else   UI   enter   typedef   二叉树   log   end   

【例3-5】扩展二叉树

链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1340
时间限制: 1000 ms         内存限制: 65536 KB

【题目描述】

由于先序、中序和后序序列中的任一个都不能唯一确定一棵二叉树,所以对二叉树做如下处理,将二叉树的空结点用·补齐,如图所示。我们把这样处理后的二叉树称为原二叉树的扩展二叉树,扩展二叉树的先序和后序序列能唯一确定其二叉树。

现给出扩展二叉树的先序序列,要求输出其中序和后序序列。技术分享图片

【输入】

扩展二叉树的先序序列。

【输出】

输出其中序和后序序列。

【输入样例】

ABD..EF..G..C..

【输出样例】

DBFEGAC
DFGEBCA
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
typedef struct node;
typedef node *tree;
struct node{
    char data;
    tree l,r,f;
};
tree bt;
int i=-1;
string s;
void build(tree &bt)
{
    
    if(s[++i]!=.)
    {
        bt=new node;
        bt->data=s[i];
    
        build(bt->l);
        build(bt->r);
        
    }
    else bt=NULL;
}
void post(tree bt)
{
    if(bt)
    {
        post(bt->l);
        post(bt->r);
        cout<<bt->data;
    }
}
void mid(tree bt)
{
    if(bt)
    {
        mid(bt->l);
        cout<<bt->data;
        mid(bt->r);
        
    }
}
int main()
{
    
    cin>>s;
    
    build(bt);
    mid(bt);
    cout<<endl;
    post(bt);
    cout<<endl;
    
}

 

【例3-5】扩展二叉树

标签:tree   main   else   UI   enter   typedef   二叉树   log   end   

原文地址:http://www.cnblogs.com/EdSheeran/p/8017862.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!