编程题:最优二分检索树
一个集合有n个标识符。设该集合递增有序,标识符编号从1到n。统计一段时间内对该集合的查找操作,得知查找第i个标识符的次数是Pi(1≤i≤n) ;查找不在该集合的标识符(即未找到)的情况,可分为n+1种情形:小于第1个标识符、在第i个标识符和第i+1个标识符之间(1≤i≤n-1),大于第n个标识符,每种情形的次数是Qi(0≤i≤n)。
请你构造一棵二分检索树,使这段时间的所有查找操作的平均检索次数最小,并输出这棵树的先根序列。如果有多棵树满足条件,输出根接点编号最小的那一棵。
### 输入格式:
第1行,一个整数n,表示标识符的个数,1≤n≤5000。
第2行,n个整数Pi,Pi表示查找第i个标识符的次数,0≤Pi≤10。
第3行,n+1个整数Qi,Qi表示未找到的第i种情形的次数,0≤Qi≤10。
### 输出格式:
n行,表示所求二叉树的先根序列,每个结点的编号占一行。
### 输入样例:
在这里给出一组输入。例如:
```in
4
3 3 1 1
2 3 1 1 1
```
### 输出样例:
在这里给出相应的输出。例如:
```out
2
1
3
4
```
答案:若无答案欢迎评论
请你构造一棵二分检索树,使这段时间的所有查找操作的平均检索次数最小,并输出这棵树的先根序列。如果有多棵树满足条件,输出根接点编号最小的那一棵。
### 输入格式:
第1行,一个整数n,表示标识符的个数,1≤n≤5000。
第2行,n个整数Pi,Pi表示查找第i个标识符的次数,0≤Pi≤10。
第3行,n+1个整数Qi,Qi表示未找到的第i种情形的次数,0≤Qi≤10。
### 输出格式:
n行,表示所求二叉树的先根序列,每个结点的编号占一行。
### 输入样例:
在这里给出一组输入。例如:
```in
4
3 3 1 1
2 3 1 1 1
```
### 输出样例:
在这里给出相应的输出。例如:
```out
2
1
3
4
```
答案:若无答案欢迎评论