华为 · 广度优先搜索(BFS) · 算法编程题
华为 广度优先搜索(BFS) 时限 2 秒 / 256 MB

题目描述

小红正在合并两套服务管理树。每棵树都用层序遍历数组表示,空节点用 -1 表示。
两棵树可以合并的条件是:对于同一个位置,如果两棵树都有非空节点,那么两个节点的值必须相同;如果只有一棵树在该位置有节点,则合并后保留这个节点;如果两棵树在该位置都是空节点,则合并后仍为空。
如果合并过程中出现同一位置两个非空节点值不同,则两棵树冲突,不能合并。
若可以合并,请输出合并后的层序遍历结果,并删除末尾多余的 -1;否则输出 -1。

输入输出

输入描述
第一行输入整数 n,表示第一棵树层序数组长度。
第二行输入 n 个元素,空节点用 -1 表示。
第三行输入整数 m,表示第二棵树层序数组长度。
第四行输入 m 个元素,空节点用 -1 表示。
输出描述
若可以合并,输出合并后树的层序遍历结果,元素之间用空格分隔,并删除末尾多余的 -1;若不能合并,输出 -1。

样例共 1 组

样例 1
输入
5
1 2 -1 5 3
6
1 -1 4 -1 -1 6
输出
-1

算法解析依据一般

考点:广度优先搜索(BFS)

限制 2 秒 / 256MB | 标准输入输出

题目画像

  • 源站时限:2 秒(牛客口径,非本题专属门槛)

解题思路

参考方向:广度优先搜索(BFS)

按层扩散搜索,无权图上第一次到达即最短路。

思路框架(广度优先搜索(BFS) 通法 · 非本题专属)

  1. 起点入队并标记已访问。
  2. 每次取队首,把它的所有未访问邻居入队并记录步数。
  3. 第一次访问到目标时,步数即为最少步数。
  4. 网格类题目通常有 4(或 8)个方向,用方向数组统一处理。

实现要点:标记访问必须在入队时做,不能在出队时做,否则会重复入队甚至超时。

复杂度:时间 O(V+E) | 空间 O(V)

该范式的通法易错点

  • 出队才标记访问导致 MLE/TLE。
  • 网格边界没判,越界访问。
本题在源数据中没有官方考点标签,方向由题面特征推断,仅供参考。

样例

样例 1

  • 输入:5 / 1 2 -1 5 3 / 6 / 1 -1 4 -1 -1 6
  • 输出:-1

解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。

本题来源:2026年-华为-05月13号开发岗。

‹ 上一题 全部编程题 下一题 ›
编程算法题为只读内容:无需作答,直接看题与解析 · 本站不提供在线判题 · 解析由校招宝本地引擎整理,非官方题解