首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

已知中序后序,确定一棵树,并以特定形式输出解决思路

2012-05-29 
已知中序后序,确定一棵树,并以特定形式输出例如树的中序是:bac;后序是:bca那么输出结果应该是:(b)a(c)求改

已知中序后序,确定一棵树,并以特定形式输出
例如树的中序是:bac;后序是:bca

那么输出结果应该是:(b)a(c)

求改错。。。

#include <iostream>
using namespace std;

char InOrder[20], PostOrder[20];

void DPS(int InStart, int InEnd, int PostStart, int PostEnd)
{
int pos;
for (pos = PostStart; InOrder[pos] != PostOrder[PostEnd]; pos++)
{}
if (pos != InStart)
{
cout<<"(";
DPS(InStart, pos -1, PostStart, PostStart + pos - 1);
cout<<")";
}
cout<<PostOrder[PostEnd];
if (pos != InEnd)
{
cout<<"(";
DPS(pos + 1, InEnd, PostEnd - 1, PostStart + pos);
cout<<")";
}

}

int main(void)
{
int n;
cout<<"您要判断的次数 : ";
cin>>n;

for (int i = 0; i < n; i++)
{
cout<<"输入中序 :";
cin>>InOrder;
cout<<"输入后序 :";
cin>>PostOrder;
int len = strlen(InOrder);
DPS(0, len - 1, 0, len-1);
}


system("pause");
return 0;
}


[解决办法]

C/C++ code
#include <iostream>using namespace std;char InOrder[20], PostOrder[20];void DPS(int InStart, int InEnd, int PostStart, int PostEnd){    int pos;    for (pos = PostStart; InOrder[pos] != PostOrder[PostEnd]; pos++)    {}    if (pos != InStart)    {        cout<<"(";        DPS(InStart, pos -1, PostStart, PostStart + pos - 1);        cout<<")";        }    cout<<PostOrder[PostEnd];    if (pos != InEnd)    {        cout<<"(";        DPS(pos + 1, InEnd, PostEnd - 1, PostStart + pos);        cout<<")";    }}int main(void){    int n;    cout<<"您要判断的次数 : ";    cin>>n;        for (int i = 0; i < n; i++)    {        cout<<"输入中序 :";        cin>>InOrder;        cout<<"输入后序 :";        cin>>PostOrder;        int len = strlen(InOrder);        DPS(0, len - 1, 0, len-1);        }        system("pause");    return 0;    }
[解决办法]
你想以怎么样的顺序输出树型结构?输出多了,反而觉得你这个混乱了。

热点排行