-->
当前位置:首页 > 题库 > 正文内容

程序填空题:后序+中序序列构造二叉树(递归法)

Luz4年前 (2021-05-10)题库1689
后序+中序序列构造二叉树(递归法)。

```c++
#include
#include
#include
#define N 1000
using namespace std;
struct node{
char data;
struct node * lchild;
struct node * rchild;
};

struct node * createtree(char *post,char *in,int len)
{ if(len == 0) return NULL;
int i=0;
int m=@@[post[len-1]](2);
struct node *root;
while(i root=(struct node *)malloc(sizeof(struct node));
root->data=m;
root->lchild=@@[createtree(post,in,i)](2);
root->rchild=@@[createtree(post+i,in+i+1,len-i-1)](2);
return root;
}

void Preorder(struct node * root)
{
if(root)
{
cout<data;
Preorder(root->lchild);
Preorder(root->rchild);
}
}

int main()
{
int n,i;
char post[N];
char in[N];
cin>>n;
for(i=0;i cin>>post[i];
for(i=0;i cin>>in[i];
struct node *root=createtree(post,in,n);
Preorder(root);
return 0;
}
```
### 输入样例:
第一行输入序列长度n,第二行输入n个字符表示二叉树后序遍历的序列,第三行输入n个字符表示二叉树中序遍历的序列
```in
9
GHDBEIFCA
GDHBAECIF
```

### 输出样例:
输出二叉树先序遍历的序列。
```out
ABDGHCEFI
```






答案:
第1空:post[len-1]

第2空:createtree(post,in,i)

第3空:createtree(post+i,in+i+1,len-i-1)

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。