3 条题解
- 
  0
#include
#include
#include
#include
using namespace std;
typedef char TElemType;
//二叉树的二叉链表存储表示
typedef struct BiTNode {
TElemType data; //结点数据域
struct BiTNode *lchild, *rchild; //左右孩子指针
} BiTNode, *BiTree;
//根据先序序列pre[pre_low..pre_low+len-1]和中序序列in[in_low..in_low+len-1]建树t
void BuildTree(BiTree& t, char pre[], int pre_low, char in[], int in_low, int len)
{
t = new BiTNode;if (t)
{
if (len <= 0)
{
t = NULL;
return;
}
t->data = pre[pre_low];
int i = 0;
while (in[in_low + i] != t->data)i++;
BuildTree(t->lchild, pre, pre_low + 1, in, in_low, i);
BuildTree(t->rchild, pre, pre_low + i + 1, in, in_low + i + 1, len - (i + 1));
}
return;
}
// 后序遍历的递归算法
void PostOrderTraverse(BiTree t)
{
if (t) {
PostOrderTraverse(t->lchild);//遍历左孩子 PostOrderTraverse(t->rchild);//遍历右孩子 cout<<t->data ; }}
void DestroyBitree(BiTree& t)
{
if(t)
{ DestroyBitree(t->lchild); DestroyBitree(t->rchild); free(t); }}
int main()
{
char pre[30], in[30];
BiTree t = NULL;
while(cin >> pre) {
cin >> in; BuildTree(t, pre, 0, in, 0, strlen(in)); PostOrderTraverse(t); DestroyBitree(t); cout << endl;}
}
 
信息
- ID
 - 1180
 - 时间
 - 1000ms
 - 内存
 - 128MiB
 - 难度
 - 6
 - 标签
 - 递交数
 - 58
 - 已通过
 - 19
 - 上传者