- 描述
-
为了庆祝建校125周年,Peking Fireworks University燃放了一种二叉树形状的烟花,烟花上有N个节点,每个节点都有一个1~N之间的颜色编号,根节点的编号固定为1,其他节点的编号随机分配且各不相同。
小明站在观礼台的右侧,只能看到右侧节点的烟花,他很好奇从左侧能看到哪些颜色的烟花,你能帮帮他吗?
例如对于如下的二叉树烟花,从左侧看到的结果为[1, 4, 3, 8, 2]。
- 输入
- 输入共N+1行。
第1行为一个整数N(1<=N<=1000),表示二叉树烟花中的节点个数。这N个节点的颜色编号为1~N,规定1号节点为根节点。
接下来N行,每行有两个整数,分别为1~N号节点的左子节点和右子节点的颜色编号,如果子节点为空,则用-1表示。 - 输出
- 按照从顶到底的顺序,输出从左侧看到的节点的颜色编号(即输出广度优先搜索中每一层第一个节点),编号之间用空格隔开。
- 样例输入
-
5 2 3 -1 5 -1 4 -1 -1 -1 -1
- 样例输出
-
1 2 5
- 提示
- (1)一种处理输入的方式:开辟一个大小为N的数组,存储这N个二叉树节点,然后根据每行输入,将相关节点用左右子节点指针连接起来。
(2)BFS可以借助队列实现,可以使用STL