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

程序填空题:先序序列+中序序列建立二叉树(递归法)

Luz4年前 (2021-05-10)题库1181
先序序列+中序序列建立二叉树。

```c++
#include
#define N 100
using namespace std;

typedef struct BiNode
{
char data;
struct BiNode *lchild,*rchild;
}BiTNode,*BiTree;

BiTree CreateBTree(char a[],char b[],int n)
//由先序序列a[0..n-1]和中序序列b[0..n-1]建立二叉链存储结构bt
{ int k;
if (n<=0) return NULL;
char root=a[0]; //根结点值
BiTree bt=new BiNode;
bt->data=root;
for (k=0;k if (b[k]==root)
break;
bt->lchild=@@[CreateBTree(a+1,b,k)](2);
bt->rchild=@@[CreateBTree(a+k+1,b+k+1,n-k-1)](2);
return bt;
}

void LRD(BiTree T)
{
if(T){
LRD(T->lchild);
LRD(T->rchild);
cout << T->data;
}
}
int main()
{ BiTree T;
int n,i;
char a[N],b[N];
cin>>n;
for(i=0;i cin>>a[i];
for(i=0;i cin>>b[i];
T=CreateBTree(a,b,n);
LRD(T);
return 0;
}
```
### 输入样例:
第一行输入序列长度n,第二行输入n个字符表示二叉树先序遍历的序列,第三行输入n个字符表示二叉树中序遍历的序列
```in
9
ABDGHCEFI
GDHBAECIF
```

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






答案:
第1空:CreateBTree(a+1,b,k)

第2空:CreateBTree(a+k+1,b+k+1,n-k-1)

发表评论

访客

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