您的位置:首页 > 其它

[Data Structure][Tree][Binary Tree]POJ 2255----Tree Recovery

2013-07-31 19:48 393 查看
非常经典的一道二叉树题目

运用递归建立二叉树

1.前序序列中pre[0]为二叉树的根节点

2.中序序列中root所在位置的两侧分别为左子树和右子树

3.运用递归建立以结构体为节点的二叉树,指针域包含左孩子和右孩子

题目链接:http://poj.org/problem?id=2255

#include<iostream>
#include<string>

using namespace std;

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

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

void postorder(node *&root)
{
if(root != NULL)
{
postorder(root->lchild);
postorder(root->rchild);
cout << root->data;
}
}

int main()
{
string pre, in;
while(cin >> pre >> in)
{
node* root;
root = create(pre, in);
postorder(root);
cout << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: