题目描述
按照先序遍历的顺序建立二叉树。
对于每个询问 $x$,先在二叉树中找到编号为 $x$ 的结点,并由下至上依次输出它的祖先。
如下图所示,对于结点 $6$,它的祖先分别是 $6,5,2,1$.
![1684484763265.png](/userfiles/images/6e4564e0-a5a7-41eb-9c2a-47331576d736.png)
输入格式
第一行按照先序遍历的顺序给出了每个结点的编号 $A_i$,为一整数,当 $A_i=0$ 时代表该结点为空结点。
第二行包含一个整数 $Q$,表示询问个数。
其后 $Q$ 行,每行包含一个正整数 $x$,表示要寻找的结点的编号。
- $0 \le A_i \le 1000$
- $\forall_{i \ne j}$ $A_i \ne A_j$
- 假定根节点深度为 $0$,所有结点的深度不超过 $23$
输出格式
对于每个询问,在一行内输出 $x$ 的所有祖先,以空格隔开。
样例输入 #1
1 2 4 0 0 5 6 0 0 7 0 0 3 0 8 0 0
4
4
6
8
3
样例输出 #1
4 2 1
6 5 2 1
8 3 1
3 1
提示
先序遍历,访问结点进栈,当访问到值为 $x$ 的结点时,栈中所有元素均为该点祖先。