5579: 进阶实验8-2.3:二叉搜索树的最近公共祖先
内存限制:64 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:20
解决:12
题目描述
给定一棵二叉搜索树的先序遍历序列,要求你找出任意两结点的最近公共祖先结点(简称 LCA)。
输入
.输入的第一行给出两个正整数:待查询的结点对数 M ( ≤ 1000 ) M(leq 1 000)M(≤1000)和二叉搜索树中结点个数 M ( ≤ 10000 ) M(leq 10 000)M(≤10000)。随后一行给出 N NN 个不同的整数,为二叉搜索树的先序遍历序列。最后 M MM 行,每行给出一对整数键值 U UU 和 V VV。所有键值都在整型int范围内。
输出
.对每一对给定的 U UU 和 V VV,如果找到 A AA 是它们的最近公共祖先结点的键值,则在一行中输出 LCA of U and V is A.。但如果 U UU 和 V VV 中的一个结点是另一个结点的祖先,则在一行中输出 X is an ancestor of Y.,其中 X XX 是那个祖先结点的键值,Y YY 是另一个键值。如果 二叉搜索树中找不到以 U UU 或 V VV 为键值的结点,则输出 ERROR: U is not found.或者 ERROR: V is not found.,或者 ERROR: U and V are not found.。
样例输入 复制
6 8
6 3 1 2 5 4 8 7
2 5
8 7
1 9
12 -3
0 8
99 99
样例输出 复制
LCA of 2 and 5 is 3.
8 is an ancestor of 7.
ERROR: 9 is not found.
ERROR: 12 and -3 are not found.
ERROR: 0 is not found.
ERROR: 99 and 99 are not found.