重建
#include<iostream>
#include<stack>
#include<string>
using namespace std;
struct _node{
char data;
_node *left, *right;
_node():data(0), left(NULL), right(NULL){};
};
void build_tree(_node *root, string &preOrders, string &inOrders, int &preOrderpos, int inOrderleft, int inOrderright){
root->data = preOrders[preOrderpos];
int inOrdermid = inOrders.find(root->data);
if (inOrderleft < inOrdermid){
root->left = new _node;
preOrderpos ++ ;
build_tree(root->left, preOrders, inOrders, preOrderpos, inOrderleft, inOrdermid);
}
if (inOrdermid < inOrderright - 1){
root->right = new _node;
preOrderpos ++;
build_tree(root->right, preOrders, inOrders, preOrderpos, inOrdermid + 1, inOrderright);
}
}
int main()
{
string preOders, inOrders;
while (cin >> preOders >> inOrders){
_node* root = new _node;
int pos =