poj2255

来源:互联网 发布:机器人编程工资待遇 编辑:程序博客网 时间:2024/05/22 16:55

通过遍历确定二叉树结构的问题

题意:给出二叉树的前序遍历和中序遍历,输出二叉树的后序遍历。

思路:二叉树前序遍历的首字符是二叉树的根,后序遍历中位于该字符左边的是左子树的中序遍历,右边是右子树的中序遍历。首先找出根节点,然后递归求解左右子树,最后输出根节点字符。

代码:

#include<string>#include<iostream>using namespace std;string a,b;void tree(int preleft,int preright,int midleft,int midright){    int root,leftsize,midsize;    for(root=midleft;root<=midright;root++)        if(a[preleft]==b[root])        break;    leftsize=root-midleft;    midsize=midright-root;    if(leftsize>0)        tree(preleft+1,preleft+leftsize,midleft,root-1);    if(midsize>0)        tree(preleft+leftsize+1,preright,root+1,midright);    cout<<b[root];}int main(){    while(cin>>a>>b)    {        tree(0,a.size()-1,0,b.size()-1);        cout<<endl;    }    return 0;}


 

原创粉丝点击