题目要求已知二叉树的前序中序,用代码实现后序?
代码如下,OJ检测说代码存在数组或指针越界?求更正
#include <iostream>
#include <cstring>
#include <stack>
using namespace std;
stack<char> stk;
void run(char *h_, char *t_, int i)
{
if (i > ((string)h_).size() || ((string)t_).size() <= 1)
{
if (t_ !=nullptr)
cout << t_;
return;
}
string _h_="", _t_ = "";
char *h_c = &_h_[0];
char *t_c = &_t_[0];
string format_ = (string) "%[^" + h_[i] + (string) "]" + h_[i] + (string) "%s";
char *format = &format_[0];
if (sscanf(t_, format, h_c, t_c) == 0)
{
format = "%*c%s";
sscanf(t_, format, h_c, t_c);
}
stk.push(h_[i]);
run(h_, h_c,i + 1);
run(h_, t_c, i + 1 + ((string)h_c).size());
cout << stk.top();
stk.pop();
}
int main()
{
string s;
while(getline(cin,s)){
char* ss = &s[0];
char* s1 = strtok(ss," ");
char* s2 = strtok(NULL," ");
if(((string)s1).size()!=((string)s2).size()){break;}
run(s1, s2, 0);
cout << endl;
}
}