报错信息:
Runtime Error. Received signal 11: Segmentation fault with invalid memory reference.
数组开 1000 我觉得应该已经够大了吧。
本地 Windows 测试了 #7 数据,输出是正确的。
不知道是不是因为运行环境不同导致的莫名 RE ,求大佬帮帮孩子awa
代码如下:
#include <iostream>
#include <string>
using namespace std;
char tree[1145];
void make_tree(string in_order,string pre_order,int now_node) //找根节点+左子树+右子树。 其中根节点即为now_node //now_node初始化为1.
{
tree[now_node]=pre_order[0];
if(in_order.length()<=1)
return;
int left_length=in_order.find(pre_order[0]),right_length=in_order.length()-left_length-1;
make_tree(in_order.substr(0,left_length),pre_order.substr(1,left_length),now_node*2);//左子树
make_tree(in_order.substr(in_order.length()-right_length,right_length),pre_order.substr(pre_order.length()-right_length,right_length),now_node*2+1);//右子树
return;
}
void out_post_order(int node)
{
if(tree[node*2])
out_post_order(node*2);
if(tree[node*2+1])
out_post_order(node*2+1);
cout<<tree[node];
}
int main()
{
string in_order,pre_order;
cin>>in_order>>pre_order;
make_tree(in_order,pre_order,1);
out_post_order(1);
}
附 #7 数据:
in:
ABDCJHKILMNPOQFEGRS
ABCDEFHJIKLMNOPQGRS
out:
DJKPQONMLIHFSRGECBA