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.

来源/分类