Tree Recovery--POJ 2255

1、题目类型:二叉树遍历。

2、解题思路:已知二叉树前序遍历、中序遍历,求后序遍历。

3、注意事项:二叉树构造中递归的使用。

4、实现方法:

  
    
#include < iostream >
#include
< string >
using namespace std;

struct Node{
char data;
Node
* lchild;
Node
* rchild;
};

string prestr,midstr;

Node
* CreateTree( string pre, string mid)
{
Node
* root = NULL;
if (pre.length() > 0 )
{
root
= new Node;
root
-> data = pre[ 0 ];
int index = mid.find(root -> data);
root
-> lchild = CreateTree(pre.substr( 1 ,index),mid.substr( 0 ,index));
root
-> rchild = CreateTree(pre.substr(index + 1 ),mid.substr(index + 1 ));
}
return root;
}

void PostOrder(Node * root)
{
if (root != NULL)
{
PostOrder(root
-> lchild);
PostOrder(root
-> rchild);
cout
<< root -> data;
}
}
int main()
{
while (cin >> prestr >> midstr)
{
Node
* tmp = CreateTree(prestr,midstr);
PostOrder(tmp);
cout
<< endl;
}
return 1 ;
}

 

你可能感兴趣的:(tree)