#P1021. 读研
读研
Problem Description
小林为了提高自己的姿势水平,打算接着读研究生。因此,他立即联系了彼海姆龙学院。彼海姆龙学院认为必须具有一定的数据结构基础和图论基础才能理解复杂繁琐的魔法系统,因此他们给出了如下考核:
给出一棵个点的二叉搜索树的先序遍历,保证二叉搜索树的节点值互不相同。一共有个询问,每个询问有两个数字,需要回答他们的最近公共祖先()是谁。
如果两种数字均未出现,那么输出" and are not exist."
如果其中某种数字未出现(以为例),那么输出" is not exist."
如果两个数字均在二叉搜索树上,假设他们最近的公共祖先是,那么请输出" is the ancestor of and ."。特别地,如果其中某个数是另一个数的祖先(以是祖先为例),那么改为输出" is the ancestor of ."。
对于每个询问,请单独输出一行。
这道题对于小林来说太难了,因此在这里求助,希望你能帮他搞定入学资格。
Input Format
第一行有两个整数和,代表二叉搜索树节点个数和询问的次数。
第二行个整数,代表该二叉搜索树的先序遍历。
接下来行,每行两个整数和,询问二者的。
Output Format
对于每个询问输出一行答案。
Sample
样例输入#1
7 6
8 3 2 5 7 9 10
12 6
6 5
9 1
2 10
5 7
10 8
样例输出#1
12 and 6 are not exist.
6 is not exist.
1 is not exist.
8 is the ancestor of 2 and 10.
5 is the ancestor of 7.
8 is the ancestor of 10.
Hint
,。 保证出现的所有数字均在范围内。
提示:
二叉搜索树的性质: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉搜索树。
先序遍历性质:首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。
相关
在下列比赛中: