已知前序中序求后序-二叉树

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了已知前序中序求后序-二叉树相关的知识,希望对你有一定的参考价值。

writer:pprp

思路很容易理解,但是实现还是有一点难度,容易错

参考书目:《算法竞赛宝典》

代码如下:

//已知前序中序,求后序
#include <iostream>

using namespace std;

//a是前序,b是中序
void hwg(string a,string b)
{
    int ll,lr;

    for(unsigned int i = 0; i < b.length(); i++)
    {
        if(a[0] == b[i])    //找到根节点
        {
            ll = i;                   //分别计算出左右子树的长度
            lr = b.length()-1-ll;
            if(ll)                     //
            {
                string part1(a,1,ll),part2(b,0,11);
                hwg(part1,part2);
            }
            if(lr)
            {
                string part3(a,1+ll,lr),part4(b,1+ll,lr);
                hwg(part3,part4);
            }
            cout << a[0];
            break;
        }
    }
}

int main()
{
    string a,b;
    cout <<"请输入前序:"<<endl;
    cin >> a;
    cout <<"请输入中序:"<<endl;
    cin >> b;
    cout <<"后序为:"<<endl;
    hwg(a,b);
    return 0;
}

 

以上是关于已知前序中序求后序-二叉树的主要内容,如果未能解决你的问题,请参考以下文章

二叉树面试题:前中序求后序中后序求前序

POJ2255-已知二叉树前序中序求后序

PAT A1086 Tree Traversals Again [二叉树前序中序求后序]

二叉树--已知先序中序求后序--已知中序后序求先序(基本按照网上某大神思路搬过来的)

二叉树中,啥是前序,中序。后序!

二叉树面试题:前中序求后序中后序求前序