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

编程题:最优二分检索树

Luz4年前 (2021-05-10)题库2156
一个集合有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

```






答案:若无答案欢迎评论

发表评论

访客

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