#include <iostream>
#include <string>
#include <queue>
using namespace std;
typedef struct TreeNode
{
char val;
struct TreeNode* left;
struct TreeNode* right;
}TreeNode,*TreeList;
TreeNode* CreateTree(string preorder, int prestart, int preend, string inorder, int instart, int inend)
{
if (prestart > preend)
return NULL;
TreeNode* root = new TreeNode;
root->val = preorder[prestart];
int index;
for (int i = instart; i <= inend; i++)
{
if (inorder[i] == preorder[prestart])
{
index = i;
break;
}
}
root->left = CreateTree(preorder, prestart + 1, prestart + index - instart, inorder, instart, index - 1);
root->right = CreateTree(preorder, prestart + index - instart + 1, preend, inorder, index + 1, inend);
return root;
}
void Print(TreeNode* root)
{
if (root == NULL)
return;
Print(root->left);
Print(root->right);
cout << root->val;
}
int main()
{
string preorder, inorder;
while (1)
{
cin >> preorder;
cin >> inorder;
TreeNode* root;
root = CreateTree(preorder, 0, preorder.length() - 1, inorder, 0, inorder.length() - 1);
Print(root);
cout << endl;
}
return 0;
}
二叉树遍历 九度教程32题
最新推荐文章于 2020-12-19 22:53:52 发布